Index: modules/core/src/main/java/org/jboss/ws/extensions/wsrm/server/RMInvocationHandler.java =================================================================== --- modules/core/src/main/java/org/jboss/ws/extensions/wsrm/server/RMInvocationHandler.java (revision 10499) +++ modules/core/src/main/java/org/jboss/ws/extensions/wsrm/server/RMInvocationHandler.java (working copy) @@ -46,6 +47,7 @@ import org.jboss.ws.extensions.wsrm.protocol.RMConstants; import org.jboss.ws.extensions.wsrm.protocol.RMProvider; import org.jboss.ws.extensions.wsrm.protocol.spi.RMCloseSequence; +import org.jboss.ws.extensions.wsrm.protocol.spi.RMCreateSequence; import org.jboss.ws.extensions.wsrm.protocol.spi.RMSequence; import org.jboss.ws.extensions.wsrm.protocol.spi.RMSequenceAcknowledgement; import org.jboss.ws.extensions.wsrm.protocol.spi.RMSerializable; @@ -149,7 +151,17 @@ if (RMHelper.isCreateSequence(rmReqProps)) { - sequence = new RMServerSequence(); + Map data = (Map)rmReqProps.get(RMConstant.PROTOCOL_MESSAGES_MAPPING); + RMCreateSequence rmCreateSequence = (RMCreateSequence)data.get((rmConstants.getCreateSequenceQName())); + if (rmCreateSequence.getOffer() != null) + { + sequence = new RMServerSequence(rmCreateSequence.getOffer().getIdentifier()); + } + else + { + sequence = new RMServerSequence(); + } + RMStore.serialize(dataDir, sequence); protocolMessages.add(rmConstants.getCreateSequenceResponseQName()); rmResponseContext.put(RMConstant.SEQUENCE_REFERENCE, sequence); Index: modules/core/src/main/java/org/jboss/ws/extensions/wsrm/server/RMServerSequence.java =================================================================== --- modules/core/src/main/java/org/jboss/ws/extensions/wsrm/server/RMServerSequence.java (revision 10499) +++ modules/core/src/main/java/org/jboss/ws/extensions/wsrm/server/RMServerSequence.java (working copy) @@ -96,9 +97,21 @@ public RMServerSequence() { + this(AddressingClientUtil.generateMessageID().toString()); + } + + public RMServerSequence(String offeredOutboundId) + { this.sequenceId = "seq-" + System.currentTimeMillis() + "-" + System.identityHashCode(this); this.inboundId = AddressingClientUtil.generateMessageID().toString(); - this.outboundId = AddressingClientUtil.generateMessageID().toString(); + if (offeredOutboundId != null) + { + this.outboundId = offeredOutboundId; + } + else + { + this.outboundId = AddressingClientUtil.generateMessageID().toString(); + } this.creationTime = System.currentTimeMillis(); this.duration = 10 * 60 * 1000L; // 10 minutes duration }