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/03/15 18:03:55 UTC
svn commit: r518690 - in
/webservices/sandesha/trunk/java/src/org/apache/sandesha2: msgprocessors/
storage/beans/ storage/inmemory/ util/ workers/
Author: mlovett
Date: Thu Mar 15 10:03:54 2007
New Revision: 518690
URL: http://svn.apache.org/viewvc?view=rev&rev=518690
Log:
Ensure we try the backchannel before we allow a message to be returned by MakeConnection
Modified:
webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgprocessors/ApplicationMsgProcessor.java
webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgprocessors/MakeConnectionProcessor.java
webservices/sandesha/trunk/java/src/org/apache/sandesha2/storage/beans/SenderBean.java
webservices/sandesha/trunk/java/src/org/apache/sandesha2/storage/inmemory/InMemorySenderBeanMgr.java
webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/TerminateManager.java
webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/WSRMMessageSender.java
webservices/sandesha/trunk/java/src/org/apache/sandesha2/workers/SenderWorker.java
Modified: webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgprocessors/ApplicationMsgProcessor.java
URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgprocessors/ApplicationMsgProcessor.java?view=diff&rev=518690&r1=518689&r2=518690
==============================================================================
--- webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgprocessors/ApplicationMsgProcessor.java (original)
+++ webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgprocessors/ApplicationMsgProcessor.java Thu Mar 15 10:03:54 2007
@@ -432,6 +432,10 @@
EndpointReference to = createSeqRMMessage.getTo();
if (to!=null)
createSeqEntry.setToAddress(to.getAddress());
+ // If this message is targetted at an anonymous address then we must not have a transport
+ // ready for it, as the create sequence is not a reply.
+ if(to == null || to.hasAnonymousAddress())
+ createSeqEntry.setTransportAvailable(false);
createSeqMsg.setProperty(Sandesha2Constants.QUALIFIED_FOR_SENDING, Sandesha2Constants.VALUE_FALSE);
Modified: webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgprocessors/MakeConnectionProcessor.java
URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgprocessors/MakeConnectionProcessor.java?view=diff&rev=518690&r1=518689&r2=518690
==============================================================================
--- webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgprocessors/MakeConnectionProcessor.java (original)
+++ webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgprocessors/MakeConnectionProcessor.java Thu Mar 15 10:03:54 2007
@@ -60,6 +60,7 @@
//selecting the set of SenderBeans that suit the given criteria.
SenderBean findSenderBean = new SenderBean ();
findSenderBean.setSend(true);
+ findSenderBean.setTransportAvailable(false);
if (address!=null)
findSenderBean.setToAddress(address.getAddress());
Modified: webservices/sandesha/trunk/java/src/org/apache/sandesha2/storage/beans/SenderBean.java
URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/src/org/apache/sandesha2/storage/beans/SenderBean.java?view=diff&rev=518690&r1=518689&r2=518690
==============================================================================
--- webservices/sandesha/trunk/java/src/org/apache/sandesha2/storage/beans/SenderBean.java (original)
+++ webservices/sandesha/trunk/java/src/org/apache/sandesha2/storage/beans/SenderBean.java Thu Mar 15 10:03:54 2007
@@ -113,6 +113,14 @@
private long inboundMessageNumber;
/**
+ * If this flag is set to false then the message cannot be delivered, as it is
+ * targetted at an anonymous address, and we have no approriate transport available.
+ * When this happens the message will be picked up by a MakeConnection message (or
+ * by replaying the request message)
+ */
+ private boolean transportAvailable = true;
+
+ /**
* Flags that are used to check if the primitive types on this bean
* have been set. If a primitive type has not been set then it will
* be ignored within the match method.
@@ -126,6 +134,7 @@
private static final int MSG_TYPE_FLAG = 0x00100000;
private static final int LAST_MSG_FLAG = 0x01000000;
private static final int IN_MSG_NUM_FLAG = 0x10000000;
+ private static final int TRANSPORT_FLAG = 0x00000002;
public SenderBean() {
@@ -262,6 +271,15 @@
this.inboundSequence = inboundSequence;
}
+ public boolean isTransportAvailable() {
+ return transportAvailable;
+ }
+
+ public void setTransportAvailable(boolean transportAvailable) {
+ this.transportAvailable = transportAvailable;
+ this.flags |= TRANSPORT_FLAG;
+ }
+
public String toString() {
StringBuffer result = new StringBuffer();
// There is a lot of data in this bean, so we don't trace it all.
@@ -276,6 +294,7 @@
result.append("\nResend : "); result.append(reSend);
result.append("\nSent count : "); result.append(sentCount);
result.append("\nTime to send : "); result.append(timeToSend);
+ result.append("\nTransport avail: "); result.append(transportAvailable);
return result.toString();
}
@@ -324,6 +343,9 @@
match = false;
else if((bean.flags & IN_MSG_NUM_FLAG) != 0 && bean.getInboundMessageNumber() != this.getInboundMessageNumber())
+ match = false;
+
+ else if((bean.flags & TRANSPORT_FLAG) != 0 && bean.isTransportAvailable() != this.isTransportAvailable())
match = false;
return match;
Modified: webservices/sandesha/trunk/java/src/org/apache/sandesha2/storage/inmemory/InMemorySenderBeanMgr.java
URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/src/org/apache/sandesha2/storage/inmemory/InMemorySenderBeanMgr.java?view=diff&rev=518690&r1=518689&r2=518690
==============================================================================
--- webservices/sandesha/trunk/java/src/org/apache/sandesha2/storage/inmemory/InMemorySenderBeanMgr.java (original)
+++ webservices/sandesha/trunk/java/src/org/apache/sandesha2/storage/inmemory/InMemorySenderBeanMgr.java Thu Mar 15 10:03:54 2007
@@ -74,6 +74,7 @@
matcher.setSend(true);
matcher.setSequenceID(sequenceId);
matcher.setTimeToSend(System.currentTimeMillis());
+ matcher.setTransportAvailable(true);
List matches = super.find(matcher);
if(log.isDebugEnabled()) log.debug("Found " + matches.size() + " messages");
Modified: webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/TerminateManager.java
URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/TerminateManager.java?view=diff&rev=518690&r1=518689&r2=518690
==============================================================================
--- webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/TerminateManager.java (original)
+++ webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/TerminateManager.java Thu Mar 15 10:03:54 2007
@@ -374,6 +374,11 @@
if (to!=null)
terminateBean.setToAddress(to.getAddress());
+ // If this message is targetted at an anonymous address then we must not have a transport
+ // ready for it, as the terminate sequence is not a reply.
+ if(to == null || to.hasAnonymousAddress())
+ terminateBean.setTransportAvailable(false);
+
rmsBean.setTerminateAdded(true);
storageManager.getRMSBeanMgr().update(rmsBean);
Modified: webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/WSRMMessageSender.java
URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/WSRMMessageSender.java?view=diff&rev=518690&r1=518689&r2=518690
==============================================================================
--- webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/WSRMMessageSender.java (original)
+++ webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/WSRMMessageSender.java Thu Mar 15 10:03:54 2007
@@ -148,6 +148,11 @@
EndpointReference to = msgContext.getTo();
if (to!=null)
senderBean.setToAddress(to.getAddress());
+
+ // If this message is targetted at an anonymous address then we must not have a transport
+ // ready for it, as the current message is not a reply.
+ if(to == null || to.hasAnonymousAddress())
+ senderBean.setTransportAvailable(false);
msgContext.setProperty(Sandesha2Constants.QUALIFIED_FOR_SENDING, Sandesha2Constants.VALUE_FALSE);
Modified: webservices/sandesha/trunk/java/src/org/apache/sandesha2/workers/SenderWorker.java
URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/src/org/apache/sandesha2/workers/SenderWorker.java?view=diff&rev=518690&r1=518689&r2=518690
==============================================================================
--- webservices/sandesha/trunk/java/src/org/apache/sandesha2/workers/SenderWorker.java (original)
+++ webservices/sandesha/trunk/java/src/org/apache/sandesha2/workers/SenderWorker.java Thu Mar 15 10:03:54 2007
@@ -146,6 +146,15 @@
if((toEPR==null || toEPR.hasAnonymousAddress()) &&
(makeConnection == null || !makeConnection.booleanValue()) &&
(t == null || !t.getStatus().equals(RequestResponseTransportStatus.WAITING))) {
+
+ // Mark this sender bean so that we know that the transport is unavailable, if the
+ // bean is still stored.
+ SenderBean bean = senderBeanMgr.retrieve(senderBean.getMessageID());
+ if(bean != null && bean.isTransportAvailable()) {
+ bean.setTransportAvailable(false);
+ senderBeanMgr.update(bean);
+ }
+
if (log.isDebugEnabled())
log.debug("Exit: SenderWorker::run, no response transport for anonymous message");
return;
---------------------------------------------------------------------
To unsubscribe, e-mail: sandesha-dev-unsubscribe@ws.apache.org
For additional commands, e-mail: sandesha-dev-help@ws.apache.org