You are viewing a plain text version of this content. The canonical link for it is here.
Posted to sandesha-dev@ws.apache.org by ml...@apache.org on 2007/05/16 17:16:36 UTC
svn commit: r538629 - in
/webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/msgprocessors:
ApplicationMsgProcessor.java SequenceProcessor.java
Author: mlovett
Date: Wed May 16 08:16:35 2007
New Revision: 538629
URL: http://svn.apache.org/viewvc?view=rev&rev=538629
Log:
Ensure we stop polling when a combination of sync and async 2-way calls are performed
Modified:
webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/msgprocessors/ApplicationMsgProcessor.java
webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/msgprocessors/SequenceProcessor.java
Modified: webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/msgprocessors/ApplicationMsgProcessor.java
URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/msgprocessors/ApplicationMsgProcessor.java?view=diff&rev=538629&r1=538628&r2=538629
==============================================================================
--- webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/msgprocessors/ApplicationMsgProcessor.java (original)
+++ webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/msgprocessors/ApplicationMsgProcessor.java Wed May 16 08:16:35 2007
@@ -309,15 +309,18 @@
}
if(mep == WSDLConstants.MEP_CONSTANT_OUT_IN) {
- long expectedReplies = rmsBean.getExpectedReplies();
- rmsBean.setExpectedReplies(expectedReplies + 1);
+ // We only match up requests and replies when we are doing sync interactions
+ EndpointReference replyTo = msgContext.getReplyTo();
+ if(replyTo == null || replyTo.hasAnonymousAddress()) {
+ long expectedReplies = rmsBean.getExpectedReplies();
+ rmsBean.setExpectedReplies(expectedReplies + 1);
+ }
// If we support the RM anonymous URI then rewrite the ws-a anon to use the RM equivalent.
//(do should be done only for WSRM 1.1)
if (Sandesha2Constants.SPEC_VERSIONS.v1_1.equals(rmMsgCtx.getRMSpecVersion())) {
- EndpointReference oldEndpoint = msgContext.getReplyTo();
- String oldAddress = (oldEndpoint == null) ? null : oldEndpoint.getAddress();
+ String oldAddress = (replyTo == null) ? null : replyTo.getAddress();
EndpointReference newReplyTo = SandeshaUtil.rewriteEPR(rmsBean, msgContext
.getReplyTo(), configContext);
String newAddress = (newReplyTo == null) ? null : newReplyTo.getAddress();
Modified: webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/msgprocessors/SequenceProcessor.java
URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/msgprocessors/SequenceProcessor.java?view=diff&rev=538629&r1=538628&r2=538629
==============================================================================
--- webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/msgprocessors/SequenceProcessor.java (original)
+++ webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/msgprocessors/SequenceProcessor.java Wed May 16 08:16:35 2007
@@ -247,9 +247,27 @@
// If the message is a reply to an outbound message then we can update the RMSBean that
// matches.
- String outboundSequence = bean.getOutboundInternalSequence();
- if(outboundSequence != null) {
- RMSBean outBean = SandeshaUtil.getRMSBeanFromInternalSequenceId(storageManager, outboundSequence);
+ EndpointReference toEPR = msgCtx.getTo();
+ if(toEPR == null || toEPR.hasAnonymousAddress()) {
+ RMSBean outBean = null;
+
+ // Look for the correct outbound sequence by checking the anon uuid (if there is one)
+ String toAddress = (toEPR == null) ? null : toEPR.getAddress();
+ if(SandeshaUtil.isWSRMAnonymous(toAddress)) {
+ RMSBean finderBean = new RMSBean();
+ finderBean.setAnonymousUUID(toAddress);
+ outBean = storageManager.getRMSBeanMgr().findUnique(finderBean);
+ }
+
+ // Fall back to the sequence that may have been offered at sequence creation time
+ if(outBean == null) {
+ String outboundSequence = bean.getOutboundInternalSequence();
+ if(outboundSequence != null) {
+ outBean = SandeshaUtil.getRMSBeanFromInternalSequenceId(storageManager, outboundSequence);
+ }
+ }
+
+ // Update the reply count
if(outBean != null && outBean.getExpectedReplies() > 0 ) {
outBean.setExpectedReplies(outBean.getExpectedReplies() - 1);
RMSBeanMgr outMgr = storageManager.getRMSBeanMgr();
---------------------------------------------------------------------
To unsubscribe, e-mail: sandesha-dev-unsubscribe@ws.apache.org
For additional commands, e-mail: sandesha-dev-help@ws.apache.org