Hi We are using CXF 2.4.4. for RM of one special operation. Due to technical issues (firewalling, loadbalancer, etc) we decided to use the synchronous approach.
Unfortunately, we have several problems with sync. RM: Client must(!) send an offer, if we do not send one, the server generates a Fault in the second response: It is not possible to send a create sequence request to the anonymous address This offered id is ignored by the Destination, instead the response for createSourceSequence includes a new/other id (Although this looks ok, the source still keeps the offered Sequence... since in some cases the source wants a final SeqAck for this Sequence, startind with req/res Id 4). The other Problem is marking the lastMessage, When we use: SequenceTerminationPolicyType stp = new SequenceTerminationPolicyType(); stp.setTerminateOnShutdown(true); stp.setMaxLength(1); The server/destination tries to send the TerminateSequence (ID:5) to www.w3.org, which results in a java.net.UnknownHostException: The req/res pair is as follows ID: 1 Req: createSequence with Offer 123 ID: 1 Res: CreateSequenceResponse with generated SeqID 456 ID: 2 Req: Sequence with 456 and content ID: 2 Res: SequenceAcknowledgement for 456and content ID: 3 Req: TerminateSequence for 456 ID: 3 Res: looks like an ACK (occurance of <RelatesTo xmlns="http://schemas.xmlsoap.org/ws/2004/08/addressing">http://www.w3.org/2005/08/addressing/unspecified</RelatesTo>) ID: 4 Req: SequenceAcknowledgement for 456 ID: 5 Req: Server tries to send a TerminateSequence to http://www.w3.org/2005/08/addressing/anonymous If we skip the mastMessage (setMaxLength=0) there is no error in communication but there is also no terminateSequence. Hence the question if it is possible to use RM with cxf 2.4.4. in sync mode (and without offer and with markation of lastMessage)? Our config is straigh forward (server): <wsrm-mgr:reliableMessaging> <wsrm-policy:RMAssertion> <wsrm-policy:BaseRetransmissionInterval Milliseconds="40000"/> <wsrm-policy:AcknowledgementInterval Milliseconds="0"/> </wsrm-policy:RMAssertion> <wsrm-mgr:sourcePolicy> <!-- <wsrm-mgr:sequenceTerminationPolicy maxLength="1"/> --> </wsrm-mgr:sourcePolicy> <wsrm-mgr:destinationPolicy > <wsrm-mgr:acksPolicy intraMessageThreshold="10" /> </wsrm-mgr:destinationPolicy> </wsrm-mgr:reliableMessaging> We generate the client RM Bus programmatically (initially by spring) with those features: <property name="features"> <list> <bean class="org.apache.cxf.ws.addressing.WSAddressingFeature"/> <bean class="org.apache.cxf.feature.LoggingFeature"/> <bean class="org.apache.cxf.ws.rm.feature.RMFeature"> </list> </property> public class RMBusFactory extends SpringBusFactory { ... ExtensionManagerBus originBus = (ExtensionManagerBus) super.createBus(); .... for (AbstractFeature feature : features) { feature.initialize(originBus); } originBus.setFeatures(features); any ideas? tnx & greetings Ben