...
For example, to enable the WS-Policy Framework on the server side, you configuration file could look like this:
Code Block |
|
|
<jaxws:endpoint ...>
<jaxws:features>
<p:policies/>
</jaxws:features>
</jaxws:endpoint>
|
and your wsdl:
Code Block |
|
|
<wsp:Policy wsu:Id="RM" xmlns:wsp="http://www.w3.org/2006/07/ws-policy"
xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
<wsam:Addressing xmlns:wsam="http://www.w3.org/2007/02/addressing/metadata">
<wsp:Policy/>
</wsam:Addressing>
<wsrmp:RMAssertion xmlns:wsrmp="http://schemas.xmlsoap.org/ws/2005/02/rm/policy">
<wsrmp:BaseRetransmissionInterval Milliseconds="10000"/>
</wsrmp:RMAssertion>
</wsp:Policy>
...
<wsdl:service name="ReliableGreeterService">
<wsdl:port binding="tns:GreeterSOAPBinding" name="GreeterPort">
<soap:address location="http://localhost:9020/SoapContext/GreeterPort"/>
<wsp:PolicyReference URI="#RM" xmlns:wsp="http://www.w3.org/2006/07/ws-policy"/>
</wsdl:port>
</wsdl:service>
|
Instead of attaching the PolicyReference attached to the wsdl:port element, you can also specify it as a child element of the policies features, e.g. for the server endpoint:
Code Block |
|
|
<wsp:Policy wsu:Id="RM" xmlns:wsp="http://www.w3.org/2006/07/ws-policy" ...>
</wsp:Policy>
<jaxws:endpoint ...>
<jaxws:features>
<p:policies>
<wsp:PolicyReference URI="#RM" xmlns:wsp="http://www.w3.org/2006/07/ws-policy"/>
</p:policies>
</jaxws:features>
</jaxws:endpoint>
|
...
For details about the element types used in this namespace please refer to the schemas for the http://cxf.apache.org/ws/rm/manager namespace (http://cxf.apache.org/schemas/configuration/wsrm-manager.xsd and http://cxf.apache.org/schemas/configuration/wsrm-manager-types.xsd). The jbdcStore element type is described below.
Example (feature applied at bus level):
Code Block |
|
|
<cxf:bus>
<cxf:features>
<wsa:addressing/>
<wsrm-mgr:reliableMessaging>
<wsrm-policy:RMAssertion>
<wsrm-policy:BaseRetransmissionInterval Milliseconds="4000"/>
<wsrm-policy:AcknowledgementInterval Milliseconds="2000"/>
</wsrm-policy:RMAssertion>
<wsrm-mgr:sourcePolicy>
<wsrm-mgr:sequenceTerminationPolicy maxLength="5"/>
</wsrm-mgr:sourcePolicy>
<wsrm-mgr:destinationPolicy acceptOffers="false">
<wsrm:store>
<ref bean="myStore"/>
</wsrm:store>
</wsrm-mgr:reliableMessaging>
</cxf:features>
</cxf:bus>
|
...
| Attribute Name |
Type |
Default |
| dataSource |
String |
null |
| driverClassName |
String |
org.apache.derby.jdbc.EmbeddedDriver |
| initialReconnectDelay |
long |
0 |
| keepConnection |
boolean |
false |
| maxReconnectAttempts |
int |
0 |
| passWord |
String |
null |
| tableExistsCode |
int |
0 |
| tableExistsState |
String |
null |
| schemaName |
String |
null |
| userName |
String |
null |
| url |
String |
jdbc:derby:rmdb;create=true |
Example:
Code Block |
|
|
<wsrm-mgr:jdbcStore xmlns:wsrm-mgr="http://cxf.apache.org/ws/rm/manager" id="myStore"
driverClassName="org.apache.derby.jdbc.ClientDriver"
url=""
password="password"/>
|
...
To ensure that the Reliable Messaging interceptors are added to the appropriate interceptor chains, e.g. for all client and server endpoints:
Code Block |
|
|
<bean id="rmLogicalOut" class="org.apache.cxf.ws.rm.RMOutInterceptor">
<property name="bus" ref="cxf"/>
</bean>
<bean id="rmLogicalIn" class="org.apache.cxf.ws.rm.RMInInterceptor">
<property name="bus" ref="cxf"/>
</bean>
<bean id="rmCodec" class="org.apache.cxf.ws.rm.soap.RMSoapInterceptor"/>
<cxf:bus ...>
<cxf:inInterceptors>
<ref bean="rmLogicalIn"/>
<ref bean="rmCodec"/>
</cxf:inInterceptors>
<cxf:inFaultInterceptors>
<ref bean="rmLogicalIn"/>
<ref bean="rmCodec"/>
</cxf:inFaultInterceptors>
<cxf:outInterceptors>
<ref bean="rmLogicalOut"/>
<ref bean="rmCodec"/>
</cxf:outInterceptors>
<cxf:outFaultInterceptors>
<ref bean="rmLogicalOut"/>
<ref bean="rmCodec"/>
<cxf:outFaultInterceptors>
</cxf:bus>
|
...
To configure properties of the RM Manager, you can use the rmManager element from the http://cxf.apache.org/ws/rm/manager namespace. It supports the same child elements as the reliableMessaging feature element above. For example, without using features, you can determine that seuences should have a maximum length of 5 as follows:
Code Block |
|
|
<wsrm-mgr:rmManager xmlns:wsrm-mgr="http://cxf.apache.org/ws/rm/manager">
<wsrm-mgr:sourcePolicy>
<wsrm-mgr:sequenceTerminationPolicy maxLength="5"/>
</wsrm-mgr:sourcePolicy>
</wsrm-mgr:rmManager>
|