文章中http://5148737.blog.51cto.com/5138737/1604472 中咱們曾談到,JAX-WS能夠實現webservice,與axis,cxf不一樣的是,JAX-WS是一種規範。java
1、什麼是jax-wsweb
JAX-WS規範是一組XML web services的JAVA API,JAX-WS容許開發者能夠選擇RPC-oriented或者message-oriented 來實現本身的web serviceside
2、jax-ws與jax-rpc的關係測試
Sun最開始的web services的實現是JAX-RPC 1.1 (JSR 101)。這個實現是基於Java的RPC,並不徹底支持schema規範,同時沒有對Binding和Parsing定義標準的實現。spa
JAX-WS2.0 (JSR 224)是Sun新的web services協議棧,是一個徹底基於標準的實現。在binding層,使用的是the Java Architecture for XML Binding (JAXB, JSR 222),在parsing層,使用的是the Streaming API for XML (StAX, JSR 173),同時它還徹底支持schema規範。代理
3、使用jax-ws構建web服務orm
使用jax-ws實現webservice的話,須要導入jax-ws的jar包,由於使用的是jdk中的jar,須要使用wsgen與wsimport兩個命令,下面一一道來:server
(1)新建java類,添加註解,@WebService標誌該類爲一個webservice,WebMethod標誌方法爲webservice的方法。htm
@WebService public class Hello { @WebMethod public String sayhello(String name) { System.out.println("hello," +name); return "hello,"+name; } }
(2)javac編譯該java類blog
javac Hello.java
(3)生成wsdl等文件
此處,使用wsgen生成WSDL和相關的xsd文件,
D:\workspace\jaxws\src>wsgen -cp . com.xj.service.Hello -wsdl
-wsdl參數表明生成webservice,缺省的話將默認不生成
- s參數表明生成的.java文件置於何處
-d 參數表明生成的編譯class文件置於何處
-r 參數表明生成的.wsdl文件與.xsd文件生成在何處
-cp參數表明classpath,即Hello.class的所在路徑
此時,能夠看到目錄中生成了wsdl與xsd文件。
(4)編寫服務端並啓動
public class test { public static void main(String[] args) { String address="http://localhost/Jaxws/HelloService"; Endpoint.publish(address, new Hello()); System.out.println("啓動server服務"); } }
測試發現不須要wsgen命令,上述方式也能夠啓動服務端,查看服務端是否啓動成功
訪問,http://localhost/Jaxws/HelloService,能夠看到wsdl文件
(5)編寫客戶端,並訪問服務端
新建客戶端項目jaxws-client
使用wsimport生成Java的客戶端實現
D:\workspace\jaxws-client>wsimport -p com.xj.client -keep http://localhost/Jaxws/HelloService?wsdl
命令參數說明:
-d:生成客戶端執行類的class文件的存放目錄
-s:生成客戶端執行類的源文件的存放目錄
-p:定義生成類的包名
地址爲咱們服務端中暴露的wsdl的地址,命令執行完後,能夠看到客戶端項目中生成以下文件:
代碼實現訪問:
public class test { public static void main(String[] args) { HelloService helloService = new HelloService(); Hello hello = helloService.getHelloPort(); System.out.println(hello.sayhello("sdf")); } }
如上,建立webservice代理,獲得port,經過port能夠訪問全部的方法。
下面給出jax-ws的jar包地址
http://yun.baidu.com/share/link?shareid=573524266&uk=2836507213