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 ga...@apache.org on 2007/09/20 09:08:45 UTC

svn commit: r577588 - in /webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2: client/SandeshaClient.java msgprocessors/MakeConnectionProcessor.java storage/inmemory/InMemoryStorageManager.java util/SandeshaUtil.java

Author: gatfora
Date: Thu Sep 20 00:08:44 2007
New Revision: 577588

URL: http://svn.apache.org/viewvc?rev=577588&view=rev
Log:
Allow faster copy of messages stored in the InMemoryStorageManager

Modified:
    webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/client/SandeshaClient.java
    webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/msgprocessors/MakeConnectionProcessor.java
    webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/storage/inmemory/InMemoryStorageManager.java
    webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/util/SandeshaUtil.java

Modified: webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/client/SandeshaClient.java
URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/client/SandeshaClient.java?rev=577588&r1=577587&r2=577588&view=diff
==============================================================================
--- webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/client/SandeshaClient.java (original)
+++ webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/client/SandeshaClient.java Thu Sep 20 00:08:44 2007
@@ -684,6 +684,8 @@
 	 */
 	public static void waitUntilSequenceCompleted(ServiceClient serviceClient, long maxWaitingTime)
 			throws SandeshaException {
+		if (log.isDebugEnabled())
+			log.debug("Enter: SandeshaClient::waitUntilSequenceCompleted , " + maxWaitingTime);
 
 		long startTime = System.currentTimeMillis();
 
@@ -718,6 +720,8 @@
 				}
 			}
 		}
+		if (log.isDebugEnabled())
+			log.debug("Exit: SandeshaClient::waitUntilSequenceCompleted , " + maxWaitingTime);
 	}
 
 	public static void waitUntilSequenceCompleted(ServiceClient serviceClient, long maxWaitingTime, String sequenceKey)

Modified: webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/msgprocessors/MakeConnectionProcessor.java
URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/msgprocessors/MakeConnectionProcessor.java?rev=577588&r1=577587&r2=577588&view=diff
==============================================================================
--- webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/msgprocessors/MakeConnectionProcessor.java (original)
+++ webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/msgprocessors/MakeConnectionProcessor.java Thu Sep 20 00:08:44 2007
@@ -114,7 +114,11 @@
 			if(log.isDebugEnabled()) log.debug("Exit: MakeConnectionProcessor::processInMessage, no matching message found");
 			return false;
 		}
-		
+	
+		if (transaction != null && transaction.isActive()) {
+			transaction.commit();
+			transaction = storageManager.getTransaction();
+		}
 		replyToPoll(rmMsgCtx, senderBean, storageManager, pending, makeConnection.getNamespaceValue(), transaction);
 		
 		if(log.isDebugEnabled()) log.debug("Exit: MakeConnectionProcessor::processInMessage");

Modified: webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/storage/inmemory/InMemoryStorageManager.java
URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/storage/inmemory/InMemoryStorageManager.java?rev=577588&r1=577587&r2=577588&view=diff
==============================================================================
--- webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/storage/inmemory/InMemoryStorageManager.java (original)
+++ webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/storage/inmemory/InMemoryStorageManager.java Thu Sep 20 00:08:44 2007
@@ -235,7 +235,7 @@
 				
 				if(entry != null) {
 					messageContext = entry.msgContext;
-					SOAPEnvelope clonedEnvelope = SandeshaUtil.cloneEnvelope(entry.envelope);
+					SOAPEnvelope clonedEnvelope = SandeshaUtil.copySOAPEnvelope(entry.envelope);
 					messageContext.setEnvelope(clonedEnvelope);
 				}
 			}

Modified: webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/util/SandeshaUtil.java
URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/util/SandeshaUtil.java?rev=577588&r1=577587&r2=577588&view=diff
==============================================================================
--- webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/util/SandeshaUtil.java (original)
+++ webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/util/SandeshaUtil.java Thu Sep 20 00:08:44 2007
@@ -25,8 +25,6 @@
 import java.util.Map;
 
 import javax.xml.namespace.QName;
-import javax.xml.stream.XMLStreamException;
-import javax.xml.stream.XMLStreamReader;
 
 import org.apache.axiom.om.OMElement;
 import org.apache.axiom.om.util.CopyUtils;
@@ -36,7 +34,6 @@
 import org.apache.axiom.soap.SOAPFactory;
 import org.apache.axiom.soap.SOAPHeader;
 import org.apache.axiom.soap.SOAPHeaderBlock;
-import org.apache.axiom.soap.impl.builder.StAXSOAPModelBuilder;
 import org.apache.axis2.AxisFault;
 import org.apache.axis2.Constants;
 import org.apache.axis2.addressing.AddressingConstants;
@@ -205,6 +202,8 @@
 			return "Fault";
 		case Sandesha2Constants.MessageTypes.MAKE_CONNECTION_MSG:
 			return "MakeConnection";
+		case Sandesha2Constants.MessageTypes.LAST_MESSAGE:
+			return "LastMessage";
 		case Sandesha2Constants.MessageTypes.UNKNOWN:
 			return "Unknown";
 		default:
@@ -994,22 +993,24 @@
 		
 	}
 
-        /** 
-         * Create a copy of the SOAPEnvelope
-         * @param sourceEnv
-         * @return targetEnv
-         */
-        private static SOAPEnvelope copySOAPEnvelope(SOAPEnvelope sourceEnv) {
-            if (log.isDebugEnabled()) {
-                log.debug("Start Create in-memory copy of the SOAPEnvelope");
-            }
-            // Delegate to the CopuUtils provided by Axiom
-            SOAPEnvelope targetEnv = CopyUtils.copy(sourceEnv);
-            if (log.isDebugEnabled()) {
-                log.debug("End Create in-memory copy of the SOAPEnvelope");
-            }
-            return targetEnv;
-        }
+	/** 
+	 * Create a copy of the SOAPEnvelope
+	 * @param sourceEnv
+	 * @return targetEnv
+	*/
+	public static SOAPEnvelope copySOAPEnvelope(SOAPEnvelope sourceEnv) {
+        if (log.isDebugEnabled()) 
+            log.debug("Enter: SandeshaUtil::copySOAPEnvelope");
+        
+        // Delegate to the CopuUtils provided by Axiom
+        SOAPEnvelope targetEnv = CopyUtils.copy(sourceEnv);
+        
+        if (log.isDebugEnabled()) 
+            log.debug("Exit: SandeshaUtil::copySOAPEnvelope");            
+		            
+		return targetEnv;
+	}
+
   /**
    * Remove the MustUnderstand header blocks.
    * @param envelope
@@ -1111,55 +1112,7 @@
 		}
 		else return false;
 	}	
-	
-	
-  public static SOAPEnvelope cloneEnvelope(SOAPEnvelope envelope) throws SandeshaException {
-	    
-	    // Now clone the env and set it in the message context. We need to be sure that we
-    // close off the stream reader, in order to free up some of the heap.
-    XMLStreamReader streamReader = null;
-    SOAPEnvelope clonedEnvelope = null;
-    try {
-      streamReader = envelope.getXMLStreamReader();     
-      clonedEnvelope = new StAXSOAPModelBuilder(streamReader, null).getSOAPEnvelope();
-      // you have to explicitely set the 'processed' attribute for header
-      // blocks, since it get lost in the above read from the stream.
-     
-      SOAPHeader header = envelope.getHeader();
-      if (header != null) {
-        Iterator childrenOfOldEnv = header.getChildElements();
-        Iterator childrenOfNewEnv = clonedEnvelope.getHeader().getChildElements();
-        while (childrenOfOldEnv.hasNext()) {        
-          SOAPHeaderBlock oldEnvHeaderBlock = (SOAPHeaderBlock) childrenOfOldEnv.next();
-          SOAPHeaderBlock newEnvHeaderBlock = (SOAPHeaderBlock) childrenOfNewEnv.next();
-
-          QName oldEnvHeaderBlockQName = oldEnvHeaderBlock.getQName();
-          if (oldEnvHeaderBlockQName != null) {
-            if (oldEnvHeaderBlockQName.equals(newEnvHeaderBlock.getQName())) {
-              if (oldEnvHeaderBlock.isProcessed())
-                newEnvHeaderBlock.setProcessed();
-              } else {
-                String message = SandeshaMessageHelper.getMessage(SandeshaMessageKeys.cloneDoesNotMatchToOriginal);
-                throw new SandeshaException(message);
-              }
-            }
-          }
-        }
-        // Completely build the new tree
-        clonedEnvelope.build();
-      } finally {
-      if(streamReader != null) {
-        try {
-          streamReader.close();
-        } catch(XMLStreamException e) {
-          log.debug("Caught exception closing stream", e);
-        }
-      }
-
-    }
-    return clonedEnvelope;
-  }
-	  
+	 	  
 	public static final String getStackTraceFromException(Exception e) {
     ByteArrayOutputStream baos = new ByteArrayOutputStream();
     PrintWriter pw = new PrintWriter(baos);



---------------------------------------------------------------------
To unsubscribe, e-mail: sandesha-dev-unsubscribe@ws.apache.org
For additional commands, e-mail: sandesha-dev-help@ws.apache.org