在互联网世界中,由于软件,网络,机器等各种无稳定因素,一个SOAP消息可能会发生传输失败。如果这是一个天气预报的消息,那么失败还不会造成太大影响,但如果消息是有关银行操作,比如转账,消息的传输不可靠就可能会导致用户的损失。
因为上述原因,WS-ReliableMessaging和OASIS标准,规定了一个模块化机制,确保消息传输的可靠性。
消息在源与目的地之间,消息一定有且仅有一次传递成功。也可以规定消息最少传递一次。
消息可以存在顺序性。
消息的时效性。
接下来,我将使用Metro框架来实现可靠消息。
Metro的安装
首先,若想使用Metro引擎,就必须先安装Metro。Metro的安装步骤可以从https://metro.java.net/guide/ch02.html#mustanga3 找到。
开启可靠消息
开启可靠消息的方法很简单,基于之前开发webservice的步骤,开启可靠消息只需要修改server端。开启方法有两种:
使用WSIT配置文件,声明policy
直接在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,便可以打包部署了。
来源:oschina
链接:https://my.oschina.net/u/254689/blog/261910