You are viewing a plain text version of this content. The canonical link for it is here.
Posted to fx-dev@ws.apache.org by ml...@apache.org on 2007/03/13 17:39:04 UTC
svn commit: r517763 -
/webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/AcknowledgementManager.java
Author: mlovett
Date: Tue Mar 13 09:39:02 2007
New Revision: 517763
URL: http://svn.apache.org/viewvc?view=rev&rev=517763
Log:
Use WS-RM anonymous address to piggyback ack messages
Modified:
webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/AcknowledgementManager.java
Modified: webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/AcknowledgementManager.java
URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/AcknowledgementManager.java?view=diff&rev=517763&r1=517762&r2=517763
==============================================================================
--- webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/AcknowledgementManager.java (original)
+++ webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/AcknowledgementManager.java Tue Mar 13 09:39:02 2007
@@ -68,17 +68,35 @@
// If this message is going to an anonymous address, and the inbound sequence has
// anonymous acksTo, then we add in an ack for the inbound sequence.
EndpointReference target = rmMessageContext.getTo();
- if(target.hasAnonymousAddress()) {
- String inboundSequence = (String) rmMessageContext.getProperty(Sandesha2Constants.MessageContextProperties.INBOUND_SEQUENCE_ID);
- if(inboundSequence != null) {
- RMDBean inboundBean = SandeshaUtil.getRMDBeanFromSequenceId(storageManager, inboundSequence);
- if(inboundBean != null) {
- String acksTo = inboundBean.getAcksToEPR();
- EndpointReference acksToEPR = new EndpointReference(acksTo);
-
- if(acksTo == null || acksToEPR.hasAnonymousAddress()) {
- if(log.isDebugEnabled()) log.debug("Piggybacking ack for inbound sequence: " + inboundSequence);
- RMMsgCreator.addAckMessage(rmMessageContext, inboundSequence, inboundBean);
+ if(target == null || target.hasAnonymousAddress()) {
+ if(target != null && SandeshaUtil.isWSRMAnonymous(target.getAddress())) {
+ // Search for any sequences that have an acksTo that matches this target, and add an ack
+ // for each of them.
+ RMDBean findBean = new RMDBean();
+ findBean.setAcksToEPR(target.getAddress());
+ findBean.setTerminated(false);
+ Collection rmdBeans = storageManager.getRMDBeanMgr().find(findBean);
+ Iterator sequences = rmdBeans.iterator();
+ while(sequences.hasNext()) {
+ RMDBean sequence = (RMDBean) sequences.next();
+ if(log.isDebugEnabled()) log.debug("Piggybacking ack for sequence: " + sequence.getSequenceID());
+ RMMsgCreator.addAckMessage(rmMessageContext, sequence.getSequenceID(), sequence);
+ }
+
+ } else {
+ // We have no good indicator of the identity of the destination, so the only sequence
+ // we can ack is the inbound one that caused us to create this response.
+ String inboundSequence = (String) rmMessageContext.getProperty(Sandesha2Constants.MessageContextProperties.INBOUND_SEQUENCE_ID);
+ if(inboundSequence != null) {
+ RMDBean inboundBean = SandeshaUtil.getRMDBeanFromSequenceId(storageManager, inboundSequence);
+ if(inboundBean != null) {
+ String acksTo = inboundBean.getAcksToEPR();
+ EndpointReference acksToEPR = new EndpointReference(acksTo);
+
+ if(acksTo == null || acksToEPR.hasAnonymousAddress()) {
+ if(log.isDebugEnabled()) log.debug("Piggybacking ack for inbound sequence: " + inboundSequence);
+ RMMsgCreator.addAckMessage(rmMessageContext, inboundSequence, inboundBean);
+ }
}
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: sandesha-dev-unsubscribe@ws.apache.org
For additional commands, e-mail: sandesha-dev-help@ws.apache.org