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,即可以打包部署了。

相关文章
相关标签/搜索