微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

WebService高级,可靠消息

在互联网世界中,由于软件,网络,机器等各种无稳定因素,一个SOAP消息可能会发生传输失败。如果这是一个天气预报的消息,那么失败还不会造成太大影响,但如果消息是有关银行操作,比如转账,消息的传输不可靠就可能会导致用户的损失。

因为上述原因,WS-ReliableMessaging和oasis标准,规定了一个模块化机制,确保消息传输的可靠性。

  1. 消息在源与目的地之间,消息一定有且仅有一次传递成功。也可以规定消息最少传递一次。

  2. 消息可以存在顺序性。

  3. 消息的时效性。

接下来,我将使用Metro框架来实现可靠消息。

Metro的安装

首先,若想使用Metro引擎,就必须先安装Metro。Metro的安装步骤可以从https://metro.java.net/guide/ch02.html#mustanga3 找到。

开启可靠消息

开启可靠消息的方法很简单,基于之前开发webservice的步骤,开启可靠消息只需要修改server端。开启方法有两种:

  1. 使用WSIT配置文件,声明policy

  2. 直接在WSDL中声明policy

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐