天天看點

JAX WS伺服器端簡介

本文系轉載!!!

位址:http://blog.csdn.net/kkdelta/article/details/4017747

本文簡單介紹JAX WS在伺服器端是如何實作和運作的。

下面這幅圖描述了一個SOAP binding的JAX WS從接受到用戶端的請求到傳回請求給用戶端的過程。

JAX WS伺服器端簡介

1,用戶端開發者通過URL得到WSDL檔案。(通過HTTP通路可以得到,http://?wsdl)

2,用戶端根據WSDL的描述,通過HTTP POST發送SOAP消息給伺服器端。

3, 伺服器端Listener接受到SOAP請求消息,對JAVA來說,通常是一個servlet或者EJB。Listener把消息轉發給 Dispatcher,有時候listener和Dispatcher也可能是同一個類。Dispatcher會把請求消息交給WebService的運作終端。

4,這時候,伺服器端會将HTTP request轉成伺服器端的消息類型,形成javax.xml.ws.handler.MessageContext,并處理SOAP消息的頭資訊,如mustUnderstand。

5,如果在伺服器端配置了handler,會調用handler的handleMessage方法,通常用handler來儲存消息,解密或者保證消息到達的順序。handler通過在@HandlerChain标注配置,

handlers.xml檔案内容為:

http://java.sun.com/xml/ns/javaee">

   WSSOAPHandler

   com.cxf.test.WSSOAPHandler

            WSHandler

            com.cxf.test.WSHandler

6,SOAP消息被反序列化為JAVA對象,傳到真正的實作業務的類。

7,調用真正的業務方法,執行後利用JAXB注解序列化成SOAP傳回消息。

8,如果配置了handler,會調用handler的handleMessage方法。如果業務方法有異常抛出,把異常轉為SOAP fault 消息。

9,Listener通過HTTP把response傳回給用戶端。

總體來講:整個過程是一個Requset XML(SOAP)-->JAXB-->JAVA Object-->JAXB-->Response XML(SOAP)的過程.

繼續閱讀