glassfishglassfish 目錄 → 管理密碼(預設 adminadmin)。glassfish/lib/*.jar。專案屬性中取消「Compile-time Libraries」勾選,避免 WAR 包含重複 JAR。SampleApp,Server 選 GlassFish,Source Level 1.5。my.sample.server。ServiceImpl.java(含 JAX-WS 註解 @WebService、@WebMethod)。web.xml 至 WEB-INF/,聲明 Servlet:<servlet>
<servlet-name>HelloPort</servlet-name>
<servlet-class>my.sample.server.ServiceImpl</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>HelloPort</servlet-name>
<url-pattern>/hello</url-pattern>
</servlet-mapping>
my.sample.test(Test Packages 下)。ServiceTest.java,調用生成的 Stub。build.xml,覆蓋 -pre-compile-test 目標,調用 wsimport 生成客戶端代碼:<target name="-pre-compile-test">
<taskdef name="wsimport" classname="com.sun.tools.ws.ant.WsImport">
<classpath path="${javac.classpath}"/>
</taskdef>
<antcall target="run"/> <!-- 確保服務已部署 -->
<wsimport debug="true" keep="true" destdir="test" package="my.sample.test.generated"
wsdl="https://localhost:8080/SampleApp/hello?wsdl"/>
</target>
Runtime 標籤 → Web Services → Add Web Service → 輸入 WSDL URL → Get Description → Test Operation 直接在 IDE 測試。
ServiceImpl 斷點 → Debug Main Project (Ctrl+F5) → 服務器以調試模式啟動。build.xml 中 antcall target="debug" → 測試客戶端同步調試雙端代碼。web.xml servlet-name(服務名+Port)、servlet-class,按編譯錯誤提示修正。hello.wsdl。sun-jaxws.xml 定義端點、WSDL 位置。sun-jaxws.xml。-pre-compile 目標調用 wsimport 生成介面:<wsimport destdir="src/java" package="YOUR_PACKAGE"
wsdl="${basedir}/web/WEB-INF/wsdl/YOUR_FILE.wsdl"/>
NetBeans + GlassFish 讓 JAX-WS 2.0 開發極度流暢:無需手動 wsgen,IDE 自動處理部署與 WSDL 發布;內建測試與調試工具覆蓋全生命週期。掌握 build.xml 客製化,即可應對從 Java 起步或從 WSDL 起步的各種場景。