WebService高級,可靠消息

在互聯網世界中,因爲軟件,網絡,機器等各類無穩定因素,一個SOAP消息可能會發生傳輸失敗。若是這是一個天氣預報的消息,那麼失敗還不會形成太大影響,但若是消息是有關銀行操做,好比轉帳,消息的傳輸不可靠就可能會致使用戶的損失。
html

由於上述緣由,WS-ReliableMessaging和OASIS標準,規定了一個模塊化機制,確保消息傳輸的可靠性。java

  1. 消息在源與目的地之間,消息必定有且僅有一次傳遞成功。也能夠規定消息最少傳遞一次。web

  2. 消息能夠存在順序性。服務器

  3. 消息的時效性。網絡

接下來,我將使用Metro框架來實現可靠消息。
框架

Metro的安裝

首先,若想使用Metro引擎,就必須先安裝Metro。Metro的安裝步驟能夠從https://metro.java.net/guide/ch02.html#mustanga3 找到。ide

開啓可靠消息

開啓可靠消息的方法很簡單,基於以前開發webservice的步驟,開啓可靠消息只須要修改server端。開啓方法有兩種:模塊化

  1. 使用WSIT配置文件,聲明policyui

  2. 直接在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編輯,打包部署,均與以往相同。

使用NetBeans IDE快速開發WebService

在以前這麼多篇webservice開發文章中,都沒有用到NetBeans,主要是爲了能擺脫傻瓜式開發,加強對JAX-WS的理解。隨着接觸Metro的高級功能,裸寫webservice是一件複雜的事情了。這時候,可使用NetBeans加快開發。

在NetBeans中,開發metro webservice是一件很是簡單的事情。

建立JavaWeb項目

服務器端的webservice都是由war所提供,因此首先須要建立一個web項目。

建立webservice

右鍵點擊項目,選擇new,再選擇web service. 此操做會建立一個web service和SEI。

當建立完web service之後,會在項目的web services目錄下面看到新建立的web service。

右鍵點擊建立好的web service, 選擇Edit Web Service Attributes。

在彈出的dialog中,選擇web service的功能:

能夠點擊Advanced來聲明更多屬性。

點擊保存之後,會生成WSIT配置文件。

最後開發完SEI,即可以打包部署了。

相關文章
相關標籤/搜索