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: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]