在互联网世界中,因为软件,网络,机器等各类无稳定因素,一个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,即可以打包部署了。