JAX-WS(Java API for XML-Web Services)
環境說明:
MyEclpose 6.5 blue Milestone-1
jdk 1.6.0_15
tomcat 6.0
建立并釋出伺服器端應用
1.建立web service project。
設定如圖。
2.建立一個實作類,代碼如下:
package net;
public class addImpl {
public double add(double num1,double num2){
return num1+num2;
}
}
這裡隻需要實作類,不再像XFIRE還需要一個接口。
ps:Web服務可用單個Java類的實作,但是最好是用“接口+實作”的方式來實作
3.建立web service
選擇工程名,點選工具欄的new web service按鈕。
然後如下配置:
接着(在JAVA BEAN中輸入實作類的名稱,選擇generate wsdl in project):
點選finish後包中多出一個該實作類的代理類addImplDelegate.java
4.導入包
工程-屬性-build path-add library-myeclipse libraries導入以下兩個包:
如果缺少這兩個包,tomcat啟動時會出現以下錯誤:
嚴重: Error configuring application listener of class com.sun.xml.ws.transport.http.servlet.WSServletContextListener
java.lang.ClassNotFoundException: com.sun.xml.ws.transport.http.servlet.WSServletContextListener
5.啟動tomcat,驗證并擷取WSDL檔案
啟動tomcat後在浏覽器中輸入http://localhost:8080/jaxws_src/addImplPort并點選頁面中的連結檢視WSDL檔案,如果該檔案能正确顯示證明伺服器端大功告成。
wsdl檔案的uri是http://localhost:8080/jaxws_src/addImplPort?wsdl(你可能會問URI中的addImplPort從何而來,其實這個名字由圖4中的Services port設定)
ps:在web.xml中有如下類容,可看出這個/addImplPort的作用
代碼
<servlet>
<description>JAX-WS endpoint - addImplService</description>
<display-name>addImplService</display-name>
<servlet-name>addImplService</servlet-name>
<servlet-class>
com.sun.xml.ws.transport.http.servlet.WSServlet
</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>addImplService</servlet-name>
<url-pattern>/addImplPort</url-pattern>
</servlet-mapping>
建立用戶端調用:
(不要關閉TOMCAT啊,不然。。。。。)
1.建立java project,建立一包(包名安需求)net.
2.選擇包點new web services client(參照本文的第二張圖)
ps:有别與xfire,用戶端不一定是服務端相同類型的web services client,可以是一個普通的工程也OK!!
3.指定wsdl的URI或wsdl的檔案路徑(見上)。
程式在net包中生成一些類如圖:
ps:圖中的add.java是一個javabean來,聰明的你應該知道它有啥用了吧!!
4.建立一個測試類:
package com;
import net.AddImplDelegate;
import net.AddImplService;
public class test {
public static void main(String[] args) {
AddImplService service=new AddImplService();
AddImplDelegate d= service.getAddImplPort();
double result= d.add(15.6, 12.5);
System.out.println(result);
}
}
ok!大功告成啦!!