一、名稱JAX-WS:全稱是javaTM API forxml-Based Web ServicesJAX-RS :全稱是 JavaTM API forRESTful Web Services關(guān)于JAX-WS與JAX-RS兩者是不同風(fēng)格的SOA架構(gòu)。前者以動詞為中心,指定的是每次執(zhí)行函數(shù)。而后者以名詞為中心,每次執(zhí)行的時候指的是資源。二、JAX-RS是JAVA EE6 引入的一個新技術(shù)。JAX-RS即Java API for RESTful Web Services,是一個Java 編程語言的應(yīng)用程序接口,支持按照表述性狀態(tài)轉(zhuǎn)移(REST)架構(gòu)風(fēng)格創(chuàng)建Web服務(wù)。JAX-RS使用了Java SE5引入的Java標(biāo)注來簡化Web服務(wù)的客戶端和服務(wù)端的開發(fā)和部署。JAX-WS規(guī)范是一組XML web services的JAVA API,JAX-WS允許開發(fā)者可以選擇RPC-oriented或者message-oriented 來實現(xiàn)自己的web services。三、概述在 JAX-WS中,一個遠(yuǎn)程調(diào)用可以轉(zhuǎn)換為一個基于XML的協(xié)議例如SOAP,在使用JAX-WS過程中,開發(fā)者不需要編寫任何生成和處理SOAP消息的代碼。JAX-WS的運行時實現(xiàn)會將這些API的調(diào)用轉(zhuǎn)換成為對應(yīng)的SOAP消息。在服務(wù)器端,用戶只需要通過Java語言定義遠(yuǎn)程調(diào)用所需要實現(xiàn)的接口SEI(service endpoint interface),并提供相關(guān)的實現(xiàn),通過調(diào)用JAX-WS的服務(wù)發(fā)布接口就可以將其發(fā)布為WebService接口。在客戶端,用戶可以通過JAX-WS的API創(chuàng)建一個代理(用本地對象來替代遠(yuǎn)程的服務(wù))來實現(xiàn)對于遠(yuǎn)程服務(wù)器端的調(diào)用。當(dāng)然 JAX-WS 也提供了一組針對底層消息進(jìn)行操作的API調(diào)用,你可以通過Dispatch 直接使用SOAP消息或XML消息發(fā)送請求或者使用PRovider處理SOAP或XML消息。通過web service所提供的互操作環(huán)境,我們可以用JAX-WS輕松實現(xiàn)JAVA平臺與其他編程環(huán)境(.net等)的互操作。JAX-WS與JAX-RPC之間的關(guān)系Sun最開始的web services的實現(xiàn)是JAX-RPC 1.1 (JSR 101)。這個實現(xiàn)是基于Java的RPC,并不完全支持schema規(guī)范,同時沒有對Binding和Parsing定義標(biāo)準(zhǔn)的實現(xiàn)。JAX-WS2.0 (JSR 224)是Sun新的web services協(xié)議棧,是一個完全基于標(biāo)準(zhǔn)的實現(xiàn)。在binding層,使用的是the Java Architecture for XML Binding (JAXB, JSR 222),在parsing層,使用的是the Streaming API for XML (StAX, JSR 173),同時它還完全支持schema規(guī)范。----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------JAX-RS提供了一些標(biāo)注將一個資源類,一個POJO Java類,封裝為Web資源。標(biāo)注包括:@Path,標(biāo)注資源類或者方法的相對路徑@GET,@PUT,@POST,@DELETE,標(biāo)注方法是HTTP請求的類型。@Produces,標(biāo)注返回的MIME媒體類型@Consumes,標(biāo)注可接受請求的MIME媒體類型@PathParam,@QueryParam,@HeaderParam,@CookieParam,@MatrixParam,@FormParam,分別標(biāo)注方法的參數(shù)來自于HTTP請求的不同位置,例如@PathParam來自于URL的路徑,@QueryParam來自于URL的查詢參數(shù),@HeaderParam來自于HTTP請求的頭信息,@CookieParam來自于HTTP請求的Cookie。基于JAX-RS實現(xiàn)的框架有Jersey,RESTEasy等。這兩個框架創(chuàng)建的應(yīng)用可以很方便地部署到Servlet 容器中,比如Tomcat,JBoss等。值得一提的是RESTEasy是由JBoss公司開發(fā)的,所以將用RESTEasy框架實現(xiàn)的應(yīng)用部署到JBoss服務(wù)器上,可以實現(xiàn)很多額外的功能。----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------附:cxf 實現(xiàn)兩者的一個demohttps://github.com/dogiant/cxf-demo