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