CXF WEB service 框架學(xué)習(xí)筆記_第1頁
CXF WEB service 框架學(xué)習(xí)筆記_第2頁
CXF WEB service 框架學(xué)習(xí)筆記_第3頁
CXF WEB service 框架學(xué)習(xí)筆記_第4頁
CXF WEB service 框架學(xué)習(xí)筆記_第5頁
已閱讀5頁,還剩2頁未讀, 繼續(xù)免費(fèi)閱讀

付費(fèi)下載

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

/docs/index.html/注意,在非java-project中,例如在web-project中可能出現(xiàn)(activation.jar 和 mail.jar)與工程中的 j2ee.jar 以及 myeclipse 中 D:MyEclipse 5.5.1 GAmyeclipseeclipsepluginscom.genuitec.eclipse.j2eedt.core_5.5.1datalibrarysetEE_5 的javaee.jar里面的同名包發(fā)生沖突,建議把j2ee.jar和javaee.jar中的同名包刪除,或者直接使用J2ee.jar把eclipse自帶的javaee.jar從工程中去除并加入相應(yīng)的包1. WSDL2JAVA 生成客戶端代碼 2. JAXB 3. JAX-WS 4. WS-Addressing 5. WS-Policy 6. WS -Security 7. webservice 注釋 8. 攔截器 WSDL2JAVA生成客戶端代碼CXF支持代碼生成1)Java to WSDL 、2)WSDL to Java 、3)XSD to WSDL 、4)WSDL to XML 5)WSDL to SOAP 、6)WSDL to service 如下:D:apache-cxf-2.2.5binwsdl2java -d d:/cxf-client -p example1.client :8080/ws/HelloWorld?wsdlJAXB/group/10141/topic/12028CXF默認(rèn)的數(shù)據(jù)綁定使用的JAXB,XFIRE使用Aegis替代數(shù)據(jù)綁定就是把java對(duì)象轉(zhuǎn)化為xml和把xml文件轉(zhuǎn)化為java對(duì)象不管使用任何的XML解析代碼庫(dom4j等),對(duì)于xml只是一個(gè)解析工作而已,不能馬上綁定到j(luò)ava 對(duì)象。對(duì)于對(duì)象,每 set 或者get相應(yīng)的 , 可以使用map xml 。 于是,一 的 用于對(duì)象和xml 的 就 非 , sun jaxb,一 的 java對(duì)象和xml中的xjc po.xsd能把xsd中定的java轉(zhuǎn)currency1為java,“xmlbeans的scompJAX-WS//webservices/docs/2.0/tutorial/doc/index.htmlJAX-WSfifl是一 XML web services的JAVA API ( :JAX-RPC 2.0 renamed to JAX-WS 2.0)在 JAXWS中,一個(gè)程用可以轉(zhuǎn)currency1為一個(gè) 于XML的議例如SOAP。在使用JAXWS程中,發(fā)者不 ”任何生成和 SOAP的代碼。JAXWS的 現(xiàn)“AP的用轉(zhuǎn)currency1成為對(duì)于SOAP。在器端,用戶只 Java 定程用 現(xiàn)的接S service eoit iter ace ,并 相 的 現(xiàn),用JAXWS的發(fā) 接就可以發(fā) 為We Service接。在客戶端,用戶可以JAXWS的AP 建一個(gè)代 (用 對(duì)象 替代程的) 現(xiàn)對(duì)于程器端的用。 e service 的 作 , 可以用JAXWS 現(xiàn)JA A 與 程 et等 的 作。JAXWS與JAX P 的 S 的 e services的 現(xiàn)是JAX P 1 1 JS 1 1 ?!皞€(gè) 現(xiàn)是 于Java的P 并不 支持sce afifl,同 對(duì) ii和Parsi定 的 現(xiàn)。JAXWS2 JS 224 是S 的 e services議,是一個(gè) 于 的 現(xiàn)。在ii 2 ava對(duì)象 ,使用的是te Java Arcitectre or XML ii JAX JS 222 ,在arsi,使用的是te Strea i AP or XML StAX JS 1 3 ,同 支持sce afifl。1客戶端發(fā)者URL 到WSDL文件(HTTP 問可以 到http:/?wsdl)2客戶端根據(jù)WSDL的描述,生成相 client接代 法,HTTP POST發(fā)送SOAP給器端。3器端Listener接受到SOAP請(qǐng)求,對(duì)JAVA 說, 是一個(gè)servlet或者EJB。Listener把轉(zhuǎn)發(fā)給 Dispatcher,候listener和Dispatcher 可能是同一個(gè)。Dispatcher把請(qǐng)求交給WebService的 終端。4,“候,器端 HTTP request 轉(zhuǎn)成器端的型,形成javax.xml.ws.handler.MessageContext, 并 SOAP 的 頭 信 , 如mustUnderstand。5,如果在器端 handler,用handler的handleMessage 法, 用handler 承儲(chǔ),解密或者 證到達(dá)的順序。handler在HandlerChain 注 ,handlers.xml文件為:WSSOAPHandlercom.cxf.test.WSSOAPHandlerWSHandlercom.cxf.test.WSHandler6,SOAP被反序列化為JAVA對(duì)象,傳到真正的 現(xiàn)業(yè)的。7,用真正的業(yè) 法,執(zhí) 后利用JAXB注解序列化成SOAP返回。8,如果 handler,用handler的handleMessage 法。如果業(yè) 法異 拋出,把異 轉(zhuǎn)為SOAP fault 。9,ListenerHTTP把response返回給客戶端。JAX-WS的客戶端用分為proxy 以及dispatch URL wsdlURL = new URL(file:/D:/ wsdl/prjCXFWeb.wsdl);QName serviceQName = new QName(/, WSCXFProviderService);QName portQName = new QName(/, WSCXFProviderPort);Service service = Service.create(wsdlURL, serviceQName);WSCXFProvider port = (WSCXFProvider) service.getPort(portQName, WSCXFProvider.class);trySystem.out.println(port.testWS(message);catch(SOAPFaultException e)System.out.println(e.getFault().getFaultCode();System.out.println(e.getFault().getFaultString();1,用工具WSDL文件產(chǎn)生一個(gè)SEI(service endpoint interface),一個(gè)java的interface,能夠?qū)?yīng)該web service 的功能?!皞€(gè)interface的名對(duì)應(yīng)到WSDL的portType名稱, 法和operation對(duì)應(yīng), 法的參數(shù)和message以及types對(duì)應(yīng)。CXF和Axis “樣的工具:wsdl2java?!旧厦娴腤SCXFProvider就是SEI】2,初 化Service,指定wsdL URL和service的QName,service的QName的前一部分是命名空 ,后一部分是名稱,與WSDL文件中的部分對(duì)應(yīng)。 后getPort 到一個(gè) 現(xiàn) SEI的例,“個(gè) 例被叫做Proxy。 的QName與 wsdl文件中的wsdl:port name=WSCXFProviderPort部分對(duì)應(yīng)。3,SEI用web service,傳給SEI的參數(shù)是加上JAXB annotation的java(簡單型和String不用 記)。4,傳入的參數(shù)被序列化為SOAP的payload(body部分的xml),“是因?yàn)閟ervice.getPort是proxy機(jī)制 建的,用“個(gè)proxy的 法,和 聯(lián)的InvocationHandler的invoke 法 執(zhí) ,invoke 法JAXB把java參數(shù)序列化為XML。 后把soap request發(fā)到器端。5,返回response是后與4似,InvocationHandler負(fù)責(zé)把XML利用JAXB反序列化為java對(duì)象。上面是ProxyWS-Addressing具體而 ,WS-Addressing為同步和/或異步傳輸?shù)腟OAP 一套統(tǒng)一的尋址 ,而且, 一尋址特 幫助Web的發(fā)人員圍繞多樣 的交currency1模 不僅僅只是請(qǐng)求/響應(yīng)的簡單交currency1模 建 的應(yīng)用WS-Policy/developerworks/cn/webservices/ws-policy.html(WS-Policy) fifl為請(qǐng)求者和 者定 法和 描述 的 求、首選項(xiàng)和 能如:安 、隱私 、應(yīng)用程序優(yōu)先權(quán) 、用戶帳戶優(yōu)先權(quán) 、傳輸控制WS-Security/developerworks/cn/webservices/ws-secure/建安 的 Web 以 現(xiàn) 整 和機(jī)密 使用, 被設(shè)計(jì)成用 建多 安 模型(包括 PKI、Kerberos 和 SSL)的 礎(chǔ)。WS-Security 特別為多安 令牌、多信任域、多簽名格 和多加密技術(shù) 支持。fifl 三 主 的機(jī)制:安 令牌傳播、 整 和機(jī)密 。“機(jī)制 身并不 整的安 解決 案。相反,WS-Security 是一 件, 可以與 Web 擴(kuò)展和更高級(jí)的特定于應(yīng)用程序的議聯(lián)合使用,以適應(yīng)多 安 模型和加密技術(shù)?!皺C(jī)制可以獨(dú) 使用(例如傳送安 令牌),或以 密 成的 使用(例如,對(duì)簽名和加密,并 與用于簽名和加密的密 相 的安 令牌 )。javax.jws包webservice注釋W(xué)ebServicepublic interface WebServiceSample String say(String hello);WebResult(name = user)String sayUserName(WebParam(name = user) UserDTO user);WebResult(name = req)RespBean action(WebParam(name = req)ReqBean req);1)Webservice,接中的 法輸出為Web Service,說 承 A WEB SERVICE,或者說 該接為Web Service 接endpointInterface ,一 作用于接的 現(xiàn)上,且 就是該 現(xiàn)的接的 。name 用 指定 WebService的name,對(duì)應(yīng)于的name2)WebResult自定返回 mapping到wsdl和xml-wsdl:part3)WebParam自定返回 mapping到message part和xml-wsdl:messagewebParam注解ws的 為的參數(shù)信header=true 信是 加到soap的header中4)WebMethodOnewayonly an input message and no output攔截器參 :jax-ws中的javax.xml.ws.handler.Handler是個(gè)攔截器,能夠在 的webserver前后 Handler分為LogicalMessage: 法getPayload(),以 XML 的形 負(fù) ,可以在相同的 LogicalMessage 例上多 用, 是返回可以用 整個(gè)負(fù) 的的 Source1. Interceptor一個(gè) handleMessage, 一個(gè)是 handleFault, 注意的是,在 具體的Interceptor的“ 個(gè) 法中, 別用Interceptor部的成員 。“是 于Interceptor是面 的,每個(gè)Interceptor 可能 在不同的程中,如果用 Interceptor中的部成員 ,就在Interceptor中成 的 問的,而“的Interceptor 就不是程安 的Interceptor 。2. InterceptorChain單個(gè)的Interceptor功能currency1,CXF 現(xiàn)一個(gè)SOAP , 多多的Interceptor 合在一“使用。因設(shè)計(jì) InterceptorChain,在 InterceptorChain就是一個(gè)Interceptor的fifl 安 Interceptor的權(quán) (add,remove),控制 的權(quán) (doInterceptor,pause,resume,reset,abort),交 的權(quán) ( get|setFaultObserver)。更 意 的 是 為 控 制 Interceptor 的 順 序(doInte

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論