在互聯網世界中,因爲軟件,網絡,機器等各類無穩定因素,一個SOAP消息可能會發生傳輸失敗。若是這是一個天氣預報的消息,那麼失敗還不會形成太大影響,但若是消息是有關銀行操做,好比轉帳,消息的傳輸不可靠就可能會致使用戶的損失。
html
由於上述緣由,WS-ReliableMessaging和OASIS標準,規定了一個模塊化機制,確保消息傳輸的可靠性。java
消息在源與目的地之間,消息必定有且僅有一次傳遞成功。也能夠規定消息最少傳遞一次。web
消息能夠存在順序性。服務器
消息的時效性。網絡
接下來,我將使用Metro框架來實現可靠消息。
框架
首先,若想使用Metro引擎,就必須先安裝Metro。Metro的安裝步驟能夠從https://metro.java.net/guide/ch02.html#mustanga3 找到。ide
開啓可靠消息的方法很簡單,基於以前開發webservice的步驟,開啓可靠消息只須要修改server端。開啓方法有兩種:模塊化
使用WSIT配置文件,聲明policyui
直接在WSDL中聲明policyspa
policy以下:
<definitions ....> <wsp:Policy wsu:Id="NewWebServicePortBindingPolicy" xmlns:wsrmp="http://docs.oasis-open.org/ws-rx/wsrmp/200702" xmlns:net35rmp="http://schemas.microsoft.com/ws-rx/wsrmp/200702"> <wsrmp:RMAssertion> <wsp:Policy> <wsrmp:DeliveryAssurance> <wsp:Policy> <wsrmp:ExactlyOnce/> <wsrmp:InOrder/> </wsp:Policy> </wsrmp:DeliveryAssurance> </wsp:Policy> </wsrmp:RMAssertion> <net35rmp:InactivityTimeout Milliseconds="700000"/> <wsam:Addressing/> </wsp:Policy>
上面代表使用可靠消息,消息僅能也必須傳輸成功一次。消息必須按照順序。活躍時間爲700000.
SEI開發,sun-jaxws.xml編輯,打包部署,均與以往相同。
在以前這麼多篇webservice開發文章中,都沒有用到NetBeans,主要是爲了能擺脫傻瓜式開發,加強對JAX-WS的理解。隨着接觸Metro的高級功能,裸寫webservice是一件複雜的事情了。這時候,可使用NetBeans加快開發。
在NetBeans中,開發metro webservice是一件很是簡單的事情。
服務器端的webservice都是由war所提供,因此首先須要建立一個web項目。
右鍵點擊項目,選擇new,再選擇web service. 此操做會建立一個web service和SEI。
當建立完web service之後,會在項目的web services目錄下面看到新建立的web service。
右鍵點擊建立好的web service, 選擇Edit Web Service Attributes。
在彈出的dialog中,選擇web service的功能:
能夠點擊Advanced來聲明更多屬性。
點擊保存之後,會生成WSIT配置文件。
最後開發完SEI,即可以打包部署了。