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 ch...@apache.org on 2006/10/05 07:15:56 UTC
svn commit: r453108 - in
/webservices/sandesha/trunk/java/src/org/apache/sandesha2: ./ handlers/
msgprocessors/ polling/ transport/ util/ workers/
Author: chamikara
Date: Wed Oct 4 22:15:55 2006
New Revision: 453108
URL: http://svn.apache.org/viewvc?view=rev&rev=453108
Log:
Did fixes to support secure conversation. Basically there is a new
concept of Retransmittable phases.These will be called in every
retransmission.
Bug fixes.
Modified:
webservices/sandesha/trunk/java/src/org/apache/sandesha2/Sandesha2Constants.java
webservices/sandesha/trunk/java/src/org/apache/sandesha2/handlers/SandeshaInHandler.java
webservices/sandesha/trunk/java/src/org/apache/sandesha2/handlers/SandeshaOutHandler.java
webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgprocessors/AckRequestedProcessor.java
webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgprocessors/AcknowledgementProcessor.java
webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgprocessors/ApplicationMsgProcessor.java
webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgprocessors/CreateSeqMsgProcessor.java
webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgprocessors/TerminateSeqMsgProcessor.java
webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgprocessors/TerminateSeqResponseMsgProcessor.java
webservices/sandesha/trunk/java/src/org/apache/sandesha2/polling/PollingManager.java
webservices/sandesha/trunk/java/src/org/apache/sandesha2/transport/Sandesha2TransportSender.java
webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/AcknowledgementManager.java
webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/FaultManager.java
webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/RMMsgCreator.java
webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/SandeshaUtil.java
webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/SpecSpecificConstants.java
webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/TerminateManager.java
webservices/sandesha/trunk/java/src/org/apache/sandesha2/workers/SenderWorker.java
Modified: webservices/sandesha/trunk/java/src/org/apache/sandesha2/Sandesha2Constants.java
URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/src/org/apache/sandesha2/Sandesha2Constants.java?view=diff&rev=453108&r1=453107&r2=453108
==============================================================================
--- webservices/sandesha/trunk/java/src/org/apache/sandesha2/Sandesha2Constants.java (original)
+++ webservices/sandesha/trunk/java/src/org/apache/sandesha2/Sandesha2Constants.java Wed Oct 4 22:15:55 2006
@@ -539,6 +539,8 @@
String RM_IN_ONLY_OPERATION = "RMInOnlyOperation";
+ String RETRANSMITTABLE_PHASES = "RMRetransmittablePhases";
+
String [] SPEC_NS_URIS = {
SPEC_2005_02.NS_URI,
SPEC_2006_08.NS_URI
Modified: webservices/sandesha/trunk/java/src/org/apache/sandesha2/handlers/SandeshaInHandler.java
URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/src/org/apache/sandesha2/handlers/SandeshaInHandler.java?view=diff&rev=453108&r1=453107&r2=453108
==============================================================================
--- webservices/sandesha/trunk/java/src/org/apache/sandesha2/handlers/SandeshaInHandler.java (original)
+++ webservices/sandesha/trunk/java/src/org/apache/sandesha2/handlers/SandeshaInHandler.java Wed Oct 4 22:15:55 2006
@@ -122,7 +122,7 @@
log.debug(message);
throw new AxisFault(message);
}
-
+
// validating the message
MessageValidator.validateMessage(rmMsgCtx, storageManager);
Modified: webservices/sandesha/trunk/java/src/org/apache/sandesha2/handlers/SandeshaOutHandler.java
URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/src/org/apache/sandesha2/handlers/SandeshaOutHandler.java?view=diff&rev=453108&r1=453107&r2=453108
==============================================================================
--- webservices/sandesha/trunk/java/src/org/apache/sandesha2/handlers/SandeshaOutHandler.java (original)
+++ webservices/sandesha/trunk/java/src/org/apache/sandesha2/handlers/SandeshaOutHandler.java Wed Oct 4 22:15:55 2006
@@ -95,6 +95,10 @@
return;
}
}
+
+ //this will change the execution chain of this message to work correctly in retransmissions.
+ //For e.g. Phases like security will be removed to be called in each retransmission.
+ SandeshaUtil.modifyExecutionChainForStoring(msgCtx);
String DONE = (String) msgCtx.getProperty(Sandesha2Constants.APPLICATION_PROCESSING_DONE);
if (null != DONE && "true".equals(DONE)) {
@@ -102,7 +106,7 @@
log.debug("Exit: SandeshaOutHandler::invoke, Application processing done");
return;
}
-
+
msgCtx.setProperty(Sandesha2Constants.APPLICATION_PROCESSING_DONE, "true");
StorageManager storageManager = SandeshaUtil.getSandeshaStorageManager(context, context.getAxisConfiguration());
Modified: webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgprocessors/AckRequestedProcessor.java
URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgprocessors/AckRequestedProcessor.java?view=diff&rev=453108&r1=453107&r2=453108
==============================================================================
--- webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgprocessors/AckRequestedProcessor.java (original)
+++ webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgprocessors/AckRequestedProcessor.java Wed Oct 4 22:15:55 2006
@@ -69,7 +69,7 @@
private static final Log log = LogFactory.getLog(AckRequestedProcessor.class);
- public void processAckRequestedHeaders(MessageContext message) throws SandeshaException {
+ public void processAckRequestedHeaders(MessageContext message) throws AxisFault {
if (log.isDebugEnabled())
log.debug("Enter: AckRequestedProcessor::processAckRequestHeaders");
@@ -95,7 +95,7 @@
log.debug("Exit: AckRequestedProcessor::processAckRequestHeaders");
}
- public void processAckRequestedHeader(MessageContext msgContext, OMElement soapHeader, AckRequested ackRequested) throws SandeshaException {
+ public void processAckRequestedHeader(MessageContext msgContext, OMElement soapHeader, AckRequested ackRequested) throws AxisFault {
if (log.isDebugEnabled())
log.debug("Enter: AckRequestedProcessor::processAckRequestedHeader " + soapHeader);
@@ -281,25 +281,14 @@
ackBean.setTimeToSend(timeToSend);
storageManager.storeMessageContext(key, ackMsgCtx);
-
+ msgContext.setProperty(Sandesha2Constants.QUALIFIED_FOR_SENDING, Sandesha2Constants.VALUE_FALSE);
+
// inserting the new ack.
retransmitterBeanMgr.insert(ackBean);
// passing the message through sandesha2sender
- ackMsgCtx.setProperty(Sandesha2Constants.ORIGINAL_TRANSPORT_OUT_DESC, ackMsgCtx.getTransportOut());
- ackMsgCtx.setProperty(Sandesha2Constants.SET_SEND_TO_TRUE, Sandesha2Constants.VALUE_TRUE);
-
- ackMsgCtx.setProperty(Sandesha2Constants.MESSAGE_STORE_KEY, key);
-
- ackMsgCtx.setTransportOut(new Sandesha2TransportOutDesc());
-
- AxisEngine engine = new AxisEngine(configurationContext);
- try {
- engine.send(ackMsgCtx);
- } catch (AxisFault e) {
- throw new SandeshaException(e.getMessage());
- }
+ SandeshaUtil.executeAndStore(ackRMMsgCtx, key);
SandeshaUtil.startSenderForTheSequence(configurationContext, sequenceId);
Modified: webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgprocessors/AcknowledgementProcessor.java
URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgprocessors/AcknowledgementProcessor.java?view=diff&rev=453108&r1=453107&r2=453108
==============================================================================
--- webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgprocessors/AcknowledgementProcessor.java (original)
+++ webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgprocessors/AcknowledgementProcessor.java Wed Oct 4 22:15:55 2006
@@ -40,8 +40,10 @@
import org.apache.sandesha2.security.SecurityManager;
import org.apache.sandesha2.security.SecurityToken;
import org.apache.sandesha2.storage.StorageManager;
+import org.apache.sandesha2.storage.beanmanagers.CreateSeqBeanMgr;
import org.apache.sandesha2.storage.beanmanagers.SenderBeanMgr;
import org.apache.sandesha2.storage.beanmanagers.SequencePropertyBeanMgr;
+import org.apache.sandesha2.storage.beans.CreateSeqBean;
import org.apache.sandesha2.storage.beans.SenderBean;
import org.apache.sandesha2.storage.beans.SequencePropertyBean;
import org.apache.sandesha2.util.AcknowledgementManager;
@@ -63,7 +65,7 @@
private static final Log log = LogFactory.getLog(AcknowledgementProcessor.class);
- public void processAckHeaders(MessageContext message) throws SandeshaException {
+ public void processAckHeaders(MessageContext message) throws AxisFault {
if (log.isDebugEnabled())
log.debug("Enter: AcknowledgementProcessor::processAckHeaders");
@@ -91,8 +93,7 @@
}
private void processAckHeader(MessageContext msgCtx, OMElement soapHeader, SequenceAcknowledgement sequenceAck)
- throws SandeshaException
- {
+ throws AxisFault {
if (log.isDebugEnabled())
log.debug("Enter: AcknowledgementProcessor::processAckHeader " + soapHeader);
@@ -245,9 +246,15 @@
boolean complete = AcknowledgementManager.verifySequenceCompletion(sequenceAck
.getAcknowledgementRanges().iterator(), highestOutMsgNo);
- if (complete)
+ if (complete) {
+
+ //using create sequence message as the reference message.
+// CreateSeqBeanMgr createSeqBeanMgr = storageManager.getCreateSeqBeanMgr();
+// CreateSeqBean createSeqBean = createSeqBeanMgr.retrieve(msgId);
+//
TerminateManager.addTerminateSequenceMessage(rmMsgCtx, outSequenceId, sequencePropertyKey,
storageManager);
+ }
}
}
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=453108&r1=453107&r2=453108
==============================================================================
--- webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgprocessors/ApplicationMsgProcessor.java (original)
+++ webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgprocessors/ApplicationMsgProcessor.java Wed Oct 4 22:15:55 2006
@@ -378,14 +378,12 @@
RMMsgContext ackRMMessage = AcknowledgementManager.generateAckMessage(rmMsgCtx, sequencePropertyKey ,sequenceId, storageManager);
- AxisEngine engine = new AxisEngine(configCtx);
-
- try {
+ //if the ack is anonymous send it right now.
+
+ EndpointReference to = ackRMMessage.getTo();
+ if (to!=null && SandeshaUtil.isAnonymousURI(to.getAddress())) {
+ AxisEngine engine = new AxisEngine(configCtx);
engine.send(ackRMMessage.getMessageContext());
- } catch (AxisFault e) {
- String message = SandeshaMessageHelper.getMessage(SandeshaMessageKeys.couldNotSendAck, sequenceId, e
- .toString());
- throw new SandeshaException(message, e);
}
if (log.isDebugEnabled())
@@ -896,38 +894,18 @@
createSeqEntry.setToAddress(to.getAddress());
createSeqMsg.setProperty(Sandesha2Constants.QUALIFIED_FOR_SENDING, Sandesha2Constants.VALUE_FALSE);
- createSeqEntry.setMessageType(Sandesha2Constants.MessageTypes.CREATE_SEQ);
+ storageManager.storeMessageContext(createSequenceMessageStoreKey, createSeqMsg); // storing the message
+
retransmitterMgr.insert(createSeqEntry);
- storageManager.storeMessageContext(createSequenceMessageStoreKey, createSeqMsg); // storing the
- // message.
-
- // message will be stored in the Sandesha2TransportSender
- createSeqMsg.setProperty(Sandesha2Constants.MESSAGE_STORE_KEY, createSequenceMessageStoreKey);
-
- TransportOutDescription transportOut = createSeqMsg.getTransportOut();
-
- createSeqMsg.setProperty(Sandesha2Constants.ORIGINAL_TRANSPORT_OUT_DESC, transportOut);
- createSeqMsg.setProperty(Sandesha2Constants.SET_SEND_TO_TRUE, Sandesha2Constants.VALUE_TRUE);
- createSeqMsg.setProperty(Sandesha2Constants.MESSAGE_STORE_KEY, createSequenceMessageStoreKey);
-
- Sandesha2TransportOutDesc sandesha2TransportOutDesc = new Sandesha2TransportOutDesc();
- createSeqMsg.setTransportOut(sandesha2TransportOutDesc);
-
- // sending the message once through Sandesha2TransportSender.
- AxisEngine engine = new AxisEngine(createSeqMsg.getConfigurationContext());
- try {
- engine.resumeSend(createSeqMsg);
- } catch (AxisFault e) {
- throw new SandeshaException(e.getMessage());
- }
-
+ SandeshaUtil.executeAndStore(createSeqRMMessage, createSequenceMessageStoreKey);
+
if (log.isDebugEnabled())
log.debug("Exit: ApplicationMsgProcessor::addCreateSequenceMessage");
}
private void processResponseMessage(RMMsgContext rmMsg, String internalSequenceId, long messageNumber,
- String storageKey, StorageManager storageManager) throws SandeshaException {
+ String storageKey, StorageManager storageManager) throws AxisFault {
if (log.isDebugEnabled())
log.debug("Enter: ApplicationMsgProcessor::processResponseMessage, " + internalSequenceId);
@@ -966,14 +944,11 @@
String newToStr = null;
if (msg.isServerSide()) {
- try {
- MessageContext requestMsg = msg.getOperationContext().getMessageContext(
- OperationContextFactory.MESSAGE_LABEL_IN_VALUE);
- if (requestMsg != null) {
- newToStr = requestMsg.getReplyTo().getAddress();
- }
- } catch (AxisFault e) {
- throw new SandeshaException(e.getMessage());
+
+ MessageContext requestMsg = msg.getOperationContext().getMessageContext(
+ OperationContextFactory.MESSAGE_LABEL_IN_VALUE);
+ if (requestMsg != null) {
+ newToStr = requestMsg.getReplyTo().getAddress();
}
}
@@ -1001,12 +976,8 @@
if (msg.isServerSide()) {
MessageContext requestMsg = null;
- try {
- requestMsg = msg.getOperationContext()
- .getMessageContext(OperationContextFactory.MESSAGE_LABEL_IN_VALUE);
- } catch (AxisFault e) {
- throw new SandeshaException(e.getMessage());
- }
+ requestMsg = msg.getOperationContext()
+ .getMessageContext(OperationContextFactory.MESSAGE_LABEL_IN_VALUE);
RMMsgContext reqRMMsgCtx = MsgInitializer.initializeMessage(requestMsg);
Sequence requestSequence = (Sequence) reqRMMsgCtx.getMessagePart(Sandesha2Constants.MessageParts.SEQUENCE);
@@ -1072,11 +1043,9 @@
rmMsg.setMessagePart(Sandesha2Constants.MessageParts.ACK_REQUEST, ackRequested);
}
- try {
- rmMsg.addSOAPEnvelope();
- } catch (AxisFault e1) {
- throw new SandeshaException(e1.getMessage());
- }
+
+ rmMsg.addSOAPEnvelope();
+
// Retransmitter bean entry for the application message
SenderBean appMsgEntry = new SenderBean();
@@ -1094,38 +1063,22 @@
// Send will be set to true at the sender.
msg.setProperty(Sandesha2Constants.SET_SEND_TO_TRUE, Sandesha2Constants.VALUE_TRUE);
}
+
EndpointReference to = rmMsg.getTo();
if (to!=null)
appMsgEntry.setToAddress(to.getAddress());
appMsgEntry.setInternalSequenceID(internalSequenceId);
storageManager.storeMessageContext(storageKey, msg);
- retransmitterMgr.insert(appMsgEntry);
- msg.setProperty(Sandesha2Constants.QUALIFIED_FOR_SENDING, Sandesha2Constants.VALUE_FALSE);
-
- // changing the sender. This will set send to true.
- TransportSender sender = msg.getTransportOut().getSender();
- if (sender != null) {
- Sandesha2TransportOutDesc sandesha2TransportOutDesc = new Sandesha2TransportOutDesc();
- msg.setProperty(Sandesha2Constants.MESSAGE_STORE_KEY, storageKey);
- msg.setProperty(Sandesha2Constants.ORIGINAL_TRANSPORT_OUT_DESC, msg.getTransportOut());
- msg.setTransportOut(sandesha2TransportOutDesc);
-
- }
+ msg.setProperty(Sandesha2Constants.QUALIFIED_FOR_SENDING, Sandesha2Constants.VALUE_FALSE);
+ retransmitterMgr.insert(appMsgEntry);
// increasing the current handler index, so that the message will not be
// going throught the SandeshaOutHandler again.
msg.setCurrentHandlerIndex(msg.getCurrentHandlerIndex() + 1);
- // sending the message through, other handlers and the
- // Sandesha2TransportSender so that it get dumped to the storage.
- AxisEngine engine = new AxisEngine(msg.getConfigurationContext());
- try {
- engine.resumeSend(msg);
- } catch (AxisFault e) {
- throw new SandeshaException(e);
- }
+ SandeshaUtil.executeAndStore(rmMsg, storageKey);
if (log.isDebugEnabled())
log.debug("Exit: ApplicationMsgProcessor::processResponseMessage");
Modified: webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgprocessors/CreateSeqMsgProcessor.java
URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgprocessors/CreateSeqMsgProcessor.java?view=diff&rev=453108&r1=453107&r2=453108
==============================================================================
--- webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgprocessors/CreateSeqMsgProcessor.java (original)
+++ webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgprocessors/CreateSeqMsgProcessor.java Wed Oct 4 22:15:55 2006
@@ -18,6 +18,9 @@
package org.apache.sandesha2.msgprocessors;
import java.util.Collection;
+import java.util.Map;
+
+import javax.xml.namespace.QName;
import org.apache.axiom.om.OMElement;
import org.apache.axis2.AxisFault;
@@ -126,6 +129,8 @@
// created
// sequnceID.
+
+
RMMsgContext createSeqResponse = RMMsgCreator.createCreateSeqResponseMsg(createSeqRMMsg, outMessage,
newSequenceId, storageManager); // converting the blank out
// message in to a create
Modified: webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgprocessors/TerminateSeqMsgProcessor.java
URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgprocessors/TerminateSeqMsgProcessor.java?view=diff&rev=453108&r1=453107&r2=453108
==============================================================================
--- webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgprocessors/TerminateSeqMsgProcessor.java (original)
+++ webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgprocessors/TerminateSeqMsgProcessor.java Wed Oct 4 22:15:55 2006
@@ -258,7 +258,7 @@
}
private void addTerminateSequenceResponse(RMMsgContext terminateSeqRMMsg, String sequencePropertyKey,String sequenceId,
- StorageManager storageManager) throws SandeshaException {
+ StorageManager storageManager) throws AxisFault {
if (log.isDebugEnabled())
log.debug("Enter: TerminateSeqMsgProcessor::addTerminateSequenceResponse, " + sequenceId);
@@ -305,16 +305,11 @@
AxisEngine engine = new AxisEngine(terminateSeqMsg.getConfigurationContext());
- try {
- engine.send(outMessage);
- } catch (AxisFault e) {
- String message = SandeshaMessageHelper.getMessage(SandeshaMessageKeys.couldNotSendTerminateResponse, e
- .toString());
- throw new SandeshaException(message, e);
- }
+ engine.send(outMessage);
String addressingNamespaceURI = SandeshaUtil.getSequenceProperty(sequencePropertyKey,
Sandesha2Constants.SequenceProperties.ADDRESSING_NAMESPACE_VALUE, storageManager);
+
String anonymousURI = SpecSpecificConstants.getAddressingAnonymousURI(addressingNamespaceURI);
if (anonymousURI.equals(toEPR.getAddress())) {
@@ -327,7 +322,7 @@
log.debug("Exit: TerminateSeqMsgProcessor::addTerminateSequenceResponse");
}
- public void processOutMessage(RMMsgContext rmMsgCtx) throws SandeshaException {
+ public void processOutMessage(RMMsgContext rmMsgCtx) throws AxisFault {
if (log.isDebugEnabled())
log.debug("Enter: TerminateSeqMsgProcessor::processOutMessage");
@@ -363,28 +358,29 @@
// TODO do processing of terminateMessagesCorrectly., create a new
// message instead of sendign the one given by the serviceClient
// TODO important
- try {
- AxisOperation oldOPeration = msgContext.getAxisOperation();
- AxisOperation outInAxisOp = new OutInAxisOperation(new QName("temp"));
-
- AxisOperation referenceInOutOperation = msgContext.getAxisService().getOperation(new QName (Sandesha2Constants.RM_IN_OUT_OPERATION_NAME));
- if (referenceInOutOperation==null) {
- String messge = "Cant find the recerence RM InOut operation";
- throw new SandeshaException (messge);
- }
-
- // setting flows
- outInAxisOp.setRemainingPhasesInFlow(referenceInOutOperation.getRemainingPhasesInFlow());
-// outInAxisOp.setRemainingPhasesInFlow(oldOPeration.getRemainingPhasesInFlow());
-
- OperationContext opcontext = OperationContextFactory.createOperationContext(
- WSDL20_2004Constants.MEP_CONSTANT_OUT_IN, outInAxisOp);
- opcontext.setParent(msgContext.getServiceContext());
- configurationContext.registerOperationContext(rmMsgCtx.getMessageId(), opcontext);
- } catch (AxisFault e1) {
- throw new SandeshaException(SandeshaMessageHelper.getMessage(
- SandeshaMessageKeys.axisOperationRegisterError, e1.toString()));
- }
+
+ AxisOperation outInAxisOp = new OutInAxisOperation(new QName("temp"));
+
+ AxisOperation referenceInOutOperation = msgContext.getAxisService()
+ .getOperation(
+ new QName(Sandesha2Constants.RM_IN_OUT_OPERATION_NAME));
+ if (referenceInOutOperation == null) {
+ String messge = "Cant find the recerence RM InOut operation";
+ throw new SandeshaException(messge);
+ }
+
+ // setting flows
+ // outInAxisOp.setRemainingPhasesInFlow(referenceInOutOperation.getRemainingPhasesInFlow());
+ outInAxisOp.setRemainingPhasesInFlow(referenceInOutOperation
+ .getRemainingPhasesInFlow());
+
+ OperationContext opcontext = OperationContextFactory
+ .createOperationContext(
+ WSDL20_2004Constants.MEP_CONSTANT_OUT_IN, outInAxisOp);
+ opcontext.setParent(msgContext.getServiceContext());
+ configurationContext.registerOperationContext(rmMsgCtx.getMessageId(),
+ opcontext);
+
if (terminated != null && "true".equals(terminated)) {
String message = SandeshaMessageHelper.getMessage(SandeshaMessageKeys.terminateAddedPreviously);
@@ -457,20 +453,9 @@
seqPropMgr.insert(terminateAdded);
- // This should be dumped to the storage by the sender
- TransportOutDescription transportOut = msgContext.getTransportOut();
- rmMsgCtx.setProperty(Sandesha2Constants.ORIGINAL_TRANSPORT_OUT_DESC, transportOut);
- rmMsgCtx.setProperty(Sandesha2Constants.MESSAGE_STORE_KEY, key);
rmMsgCtx.setProperty(Sandesha2Constants.SET_SEND_TO_TRUE, Sandesha2Constants.VALUE_TRUE);
- rmMsgCtx.getMessageContext().setTransportOut(new Sandesha2TransportOutDesc());
- // / addTerminateSeqTransaction.commit();
- AxisEngine engine = new AxisEngine(configurationContext);
- try {
- engine.send(msgContext);
- } catch (AxisFault e) {
- throw new SandeshaException(e.getMessage());
- }
+ SandeshaUtil.executeAndStore(rmMsgCtx, key);
if (log.isDebugEnabled())
log.debug("Exit: TerminateSeqMsgProcessor::processOutMessage");
Modified: webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgprocessors/TerminateSeqResponseMsgProcessor.java
URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgprocessors/TerminateSeqResponseMsgProcessor.java?view=diff&rev=453108&r1=453107&r2=453108
==============================================================================
--- webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgprocessors/TerminateSeqResponseMsgProcessor.java (original)
+++ webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgprocessors/TerminateSeqResponseMsgProcessor.java Wed Oct 4 22:15:55 2006
@@ -54,6 +54,7 @@
TerminateSequenceResponse tsResponse = (TerminateSequenceResponse)
terminateResRMMsg.getMessagePart(Sandesha2Constants.MessageParts.TERMINATE_SEQ_RESPONSE);
+
String sequenceId = tsResponse.getIdentifier().getIdentifier();
String sequencePropertyKey = SandeshaUtil.getSequencePropertyKey(terminateResRMMsg);
Modified: webservices/sandesha/trunk/java/src/org/apache/sandesha2/polling/PollingManager.java
URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/src/org/apache/sandesha2/polling/PollingManager.java?view=diff&rev=453108&r1=453107&r2=453108
==============================================================================
--- webservices/sandesha/trunk/java/src/org/apache/sandesha2/polling/PollingManager.java (original)
+++ webservices/sandesha/trunk/java/src/org/apache/sandesha2/polling/PollingManager.java Wed Oct 4 22:15:55 2006
@@ -149,20 +149,9 @@
//this message should not be sent until it is qualified. I.e. till it is sent through the Sandesha2TransportSender.
makeConnectionRMMessage.setProperty(Sandesha2Constants.QUALIFIED_FOR_SENDING, Sandesha2Constants.VALUE_FALSE);
- makeConnectionRMMessage.setProperty(Sandesha2Constants.MESSAGE_STORE_KEY, makeConnectionMsgStoreKey);
-
senderBeanMgr.insert(makeConnectionSenderBean);
- TransportOutDescription transportOut = makeConnectionRMMessage.getMessageContext().getTransportOut();
- makeConnectionRMMessage.setProperty(Sandesha2Constants.ORIGINAL_TRANSPORT_OUT_DESC, transportOut);
-
- Sandesha2TransportOutDesc sandesha2TransportOutDesc = new Sandesha2TransportOutDesc();
- makeConnectionRMMessage.getMessageContext().setTransportOut(sandesha2TransportOutDesc);
-
- // sending the message once through Sandesha2TransportSender.
- AxisEngine engine = new AxisEngine(configurationContext);
- engine.resumeSend(makeConnectionRMMessage.getMessageContext());
-
+ SandeshaUtil.executeAndStore(makeConnectionRMMessage, makeConnectionMsgStoreKey);
} catch (SandeshaStorageException e) {
e.printStackTrace();
} catch (SandeshaException e) {
Modified: webservices/sandesha/trunk/java/src/org/apache/sandesha2/transport/Sandesha2TransportSender.java
URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/src/org/apache/sandesha2/transport/Sandesha2TransportSender.java?view=diff&rev=453108&r1=453107&r2=453108
==============================================================================
--- webservices/sandesha/trunk/java/src/org/apache/sandesha2/transport/Sandesha2TransportSender.java (original)
+++ webservices/sandesha/trunk/java/src/org/apache/sandesha2/transport/Sandesha2TransportSender.java Wed Oct 4 22:15:55 2006
@@ -65,11 +65,10 @@
AxisConfiguration axisConfiguration = configurationContext.getAxisConfiguration();
StorageManager storageManager = SandeshaUtil.getSandeshaStorageManager(configurationContext,axisConfiguration);
-
+
msgContext.setProperty(Sandesha2Constants.QUALIFIED_FOR_SENDING,Sandesha2Constants.VALUE_TRUE);
storageManager.updateMessageContext(key,msgContext);
-
}
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=453108&r1=453107&r2=453108
==============================================================================
--- webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/AcknowledgementManager.java (original)
+++ webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/AcknowledgementManager.java Wed Oct 4 22:15:55 2006
@@ -210,7 +210,7 @@
}
public static RMMsgContext generateAckMessage(RMMsgContext referenceRMMessage, String sequencePropertyKey ,String sequenceId,
- StorageManager storageManager) throws SandeshaException {
+ StorageManager storageManager) throws AxisFault {
if (log.isDebugEnabled())
log.debug("Enter: AcknowledgementManager::generateAckMessage");
@@ -231,12 +231,7 @@
AxisOperation ackOperation = null;
- try {
- ackOperation = AxisOperationFactory.getOperationDescription(WSDL20_2004Constants.MEP_URI_IN_ONLY);
- } catch (AxisFault e) {
- throw new SandeshaException(SandeshaMessageHelper.getMessage(SandeshaMessageKeys.axisOperationError, e
- .toString()), e);
- }
+ ackOperation = AxisOperationFactory.getOperationDescription(WSDL20_2004Constants.MEP_URI_IN_ONLY);
AxisOperation rmMsgOperation = referenceRMMessage.getMessageContext().getAxisOperation();
if (rmMsgOperation != null) {
@@ -268,11 +263,8 @@
// Setting new envelope
SOAPEnvelope envelope = factory.getDefaultEnvelope();
- try {
- ackMsgCtx.setEnvelope(envelope);
- } catch (AxisFault e3) {
- throw new SandeshaException(e3.getMessage());
- }
+
+ ackMsgCtx.setEnvelope(envelope);
ackMsgCtx.setTo(acksTo);
@@ -297,14 +289,11 @@
if (referenceRMMessage.getMessageContext().getOperationContext() == null) {
// operation context will be null when doing in a GLOBAL
// handler.
- try {
- AxisOperation op = AxisOperationFactory.getAxisOperation(WSDL20_2004Constants.MEP_CONSTANT_IN_OUT);
- OperationContext opCtx = new OperationContext(op);
- referenceRMMessage.getMessageContext().setAxisOperation(op);
- referenceRMMessage.getMessageContext().setOperationContext(opCtx);
- } catch (AxisFault e2) {
- throw new SandeshaException(e2.getMessage());
- }
+
+ AxisOperation op = AxisOperationFactory.getAxisOperation(WSDL20_2004Constants.MEP_CONSTANT_IN_OUT);
+ OperationContext opCtx = new OperationContext(op);
+ referenceRMMessage.getMessageContext().setAxisOperation(op);
+ referenceRMMessage.getMessageContext().setOperationContext(opCtx);
}
referenceRMMessage.getMessageContext().getOperationContext().setProperty(
@@ -373,17 +362,18 @@
ackBean.setTimeToSend(timeToSend);
storageManager.storeMessageContext(key, ackMsgCtx);
+ ackMsgCtx.setProperty(Sandesha2Constants.QUALIFIED_FOR_SENDING, Sandesha2Constants.VALUE_FALSE);
+
// inserting the new ack.
retransmitterBeanMgr.insert(ackBean);
// / asyncAckTransaction.commit();
// passing the message through sandesha2sender
- ackMsgCtx.setProperty(Sandesha2Constants.ORIGINAL_TRANSPORT_OUT_DESC, ackMsgCtx.getTransportOut());
ackMsgCtx.setProperty(Sandesha2Constants.SET_SEND_TO_TRUE, Sandesha2Constants.VALUE_TRUE);
- ackMsgCtx.setProperty(Sandesha2Constants.MESSAGE_STORE_KEY, key);
- ackMsgCtx.setTransportOut(new Sandesha2TransportOutDesc());
ackRMMsgCtx = MsgInitializer.initializeMessage(ackMsgCtx);
-
+
+ SandeshaUtil.executeAndStore(ackRMMsgCtx, key);
+
SandeshaUtil.startSenderForTheSequence(configurationContext, sequenceId);
}
Modified: webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/FaultManager.java
URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/FaultManager.java?view=diff&rev=453108&r1=453107&r2=453108
==============================================================================
--- webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/FaultManager.java (original)
+++ webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/FaultManager.java Wed Oct 4 22:15:55 2006
@@ -415,8 +415,11 @@
// end hack
+ AxisOperation operation = AxisOperationFactory.getAxisOperation(WSDL20_2004Constants.MEP_CONSTANT_OUT_ONLY);
+
+
//TODO this fails when the in message is in only. Fault is thrown at the InOnlyAxisOperation
- MessageContext faultMsgContext = Utils.createOutMessageContext(referenceMessage);
+ MessageContext faultMsgContext = SandeshaUtil.createNewRelatedMessageContext(referenceRMMsgContext, operation); //Utils.createOutMessageContext(referenceMessage);
// setting contexts.
faultMsgContext.setAxisServiceGroup(referenceMessage.getAxisServiceGroup());
@@ -427,7 +430,6 @@
faultMsgContext.setServiceContext(referenceMessage.getServiceContext());
faultMsgContext.setServiceContextID(referenceMessage.getServiceContextID());
- AxisOperation operation = AxisOperationFactory.getAxisOperation(WSDL20_2004Constants.MEP_CONSTANT_OUT_ONLY);
OperationContext operationContext = new OperationContext(operation);
@@ -465,6 +467,8 @@
.getRMNamespaceValue());
RMMsgContext faultRMMsgCtx = MsgInitializer.initializeMessage(faultMsgContext);
+
+ faultRMMsgCtx.setAction(SpecSpecificConstants.getFaultAction (addressingNamespaceURI));
if (log.isDebugEnabled())
log.debug("Exit: FaultManager::getFault");
Modified: webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/RMMsgCreator.java
URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/RMMsgCreator.java?view=diff&rev=453108&r1=453107&r2=453108
==============================================================================
--- webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/RMMsgCreator.java (original)
+++ webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/RMMsgCreator.java Wed Oct 4 22:15:55 2006
@@ -408,13 +408,16 @@
// messages
// correctly.
- AxisOperation teferenceMsgOperation = referenceMessage.getAxisOperation();
+ //using the Sandesha2 RMOutInOperation as the reference operation.
+ AxisOperation referenceOperation = referenceMessage.getAxisService()
+ .getOperation(new QName (Sandesha2Constants.RM_IN_OUT_OPERATION_NAME));
+
AxisOperation terminateMsgOperation = terminateMessage.getAxisOperation();
- if (teferenceMsgOperation != null) {
- terminateMsgOperation.setPhasesOutFlow(teferenceMsgOperation.getPhasesOutFlow());
- terminateMsgOperation.setPhasesOutFaultFlow(teferenceMsgOperation.getPhasesOutFaultFlow());
- terminateMsgOperation.setPhasesInFaultFlow(teferenceMsgOperation.getPhasesInFaultFlow());
- terminateMsgOperation.setRemainingPhasesInFlow(teferenceMsgOperation.getRemainingPhasesInFlow());
+ if (referenceOperation != null) {
+ terminateMsgOperation.setPhasesOutFlow(referenceOperation.getPhasesOutFlow());
+ terminateMsgOperation.setPhasesOutFaultFlow(referenceOperation.getPhasesOutFaultFlow());
+ terminateMsgOperation.setPhasesInFaultFlow(referenceOperation.getPhasesInFaultFlow());
+ terminateMsgOperation.setRemainingPhasesInFlow(referenceOperation.getRemainingPhasesInFlow());
}
String rmVersion = SandeshaUtil.getRMVersion(sequencePropertyKey, storageManager);
Modified: webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/SandeshaUtil.java
URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/SandeshaUtil.java?view=diff&rev=453108&r1=453107&r2=453108
==============================================================================
--- webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/SandeshaUtil.java (original)
+++ webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/SandeshaUtil.java Wed Oct 4 22:15:55 2006
@@ -51,7 +51,9 @@
import org.apache.axis2.description.AxisService;
import org.apache.axis2.description.AxisServiceGroup;
import org.apache.axis2.description.Parameter;
+import org.apache.axis2.description.TransportOutDescription;
import org.apache.axis2.engine.AxisConfiguration;
+import org.apache.axis2.engine.AxisEngine;
import org.apache.axis2.engine.Handler;
import org.apache.axis2.util.UUIDGenerator;
import org.apache.commons.logging.Log;
@@ -68,6 +70,7 @@
import org.apache.sandesha2.storage.StorageManager;
import org.apache.sandesha2.storage.beanmanagers.SequencePropertyBeanMgr;
import org.apache.sandesha2.storage.beans.SequencePropertyBean;
+import org.apache.sandesha2.transport.Sandesha2TransportOutDesc;
import org.apache.sandesha2.workers.Invoker;
import org.apache.sandesha2.workers.Sender;
import org.apache.sandesha2.wsrm.AckRequested;
@@ -1044,4 +1047,75 @@
return false;
}
+
+ public static void executeAndStore (RMMsgContext rmMsgContext, String storageKey) throws AxisFault {
+
+ MessageContext msgContext = rmMsgContext.getMessageContext();
+ ConfigurationContext configurationContext = msgContext.getConfigurationContext();
+
+ rmMsgContext.setMessageType(Sandesha2Constants.MessageTypes.CREATE_SEQ);
+
+
+ // message will be stored in the Sandesha2TransportSender
+ msgContext.setProperty(Sandesha2Constants.MESSAGE_STORE_KEY, storageKey);
+
+ TransportOutDescription transportOut = msgContext.getTransportOut();
+
+ msgContext.setProperty(Sandesha2Constants.ORIGINAL_TRANSPORT_OUT_DESC, transportOut);
+ msgContext.setProperty(Sandesha2Constants.SET_SEND_TO_TRUE, Sandesha2Constants.VALUE_TRUE);
+ msgContext.setProperty(Sandesha2Constants.MESSAGE_STORE_KEY, storageKey);
+
+ Sandesha2TransportOutDesc sandesha2TransportOutDesc = new Sandesha2TransportOutDesc();
+ msgContext.setTransportOut(sandesha2TransportOutDesc);
+
+ // sending the message once through Sandesha2TransportSender.
+ AxisEngine engine = new AxisEngine(configurationContext);
+
+ if (msgContext.isPaused())
+ engine.resumeSend(msgContext);
+ else
+ engine.send(msgContext);
+
+
+ }
+
+ public static void modifyExecutionChainForStoring (MessageContext message) {
+
+ Object property = message.getProperty(Sandesha2Constants.RETRANSMITTABLE_PHASES);
+ if (property!=null)
+ return; //Phases are already set. Dont hv to redo.
+
+ TransportOutDescription transportOutDescription = message.getTransportOut();
+ if (!(transportOutDescription instanceof Sandesha2TransportOutDesc))
+ return; //This message is aimed to be stored only if, Sandesha2TransportOutDescription is set.
+
+ ArrayList executionChain = message.getExecutionChain();
+ ArrayList retransmittablePhaseNames = getRetransmittablePhaseNameList();
+ ArrayList retransmittablePhases = new ArrayList ();
+
+ for (Iterator it=executionChain.iterator();it.hasNext();) {
+ Handler handler = (Handler) it.next();
+
+ if (retransmittablePhaseNames.contains(handler.getName())) {
+ retransmittablePhases.add(handler);
+
+ it.remove();
+ }
+ }
+
+ message.setProperty(Sandesha2Constants.RETRANSMITTABLE_PHASES, retransmittablePhases);
+ }
+
+ private static ArrayList getRetransmittablePhaseNameList () {
+
+ //TODO get this phase list from a property
+
+ String security = "Security";
+
+ ArrayList phases = new ArrayList ();
+ phases.add(security);
+
+ return phases;
+ }
+
}
Modified: webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/SpecSpecificConstants.java
URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/SpecSpecificConstants.java?view=diff&rev=453108&r1=453107&r2=453108
==============================================================================
--- webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/SpecSpecificConstants.java (original)
+++ webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/SpecSpecificConstants.java Wed Oct 4 22:15:55 2006
@@ -314,5 +314,13 @@
return null;
}
+ public static String getFaultAction (String addressingNamespace) {
+ if (AddressingConstants.Final.WSA_NAMESPACE.equals(addressingNamespace))
+ return AddressingConstants.Final.WSA_FAULT_ACTION;
+ else if (AddressingConstants.Submission.WSA_NAMESPACE.equals(addressingNamespace))
+ return AddressingConstants.Submission.WSA_FAULT_ACTION;
+
+ return null;
+ }
}
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=453108&r1=453107&r2=453108
==============================================================================
--- webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/TerminateManager.java (original)
+++ webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/TerminateManager.java Wed Oct 4 22:15:55 2006
@@ -357,7 +357,7 @@
}
public static void addTerminateSequenceMessage(RMMsgContext referenceMessage, String outSequenceId,
- String sequencePropertyKey, StorageManager storageManager) throws SandeshaException {
+ String sequencePropertyKey, StorageManager storageManager) throws AxisFault {
ConfigurationContext configurationContext = referenceMessage.getMessageContext().getConfigurationContext();
@@ -414,11 +414,7 @@
terminateRMMessage.setProperty(MessageContextConstants.TRANSPORT_URL, transportToBean.getValue());
}
- try {
- terminateRMMessage.addSOAPEnvelope();
- } catch (AxisFault e) {
- throw new SandeshaException(e.getMessage());
- }
+ terminateRMMessage.addSOAPEnvelope();
String key = SandeshaUtil.getUUID();
@@ -458,20 +454,10 @@
seqPropMgr.insert(terminateAdded);
- // This should be dumped to the storage by the sender
- TransportOutDescription transportOut = terminateRMMessage.getMessageContext().getTransportOut();
- terminateRMMessage.setProperty(Sandesha2Constants.ORIGINAL_TRANSPORT_OUT_DESC, transportOut);
- terminateRMMessage.setProperty(Sandesha2Constants.MESSAGE_STORE_KEY, key);
terminateRMMessage.setProperty(Sandesha2Constants.SET_SEND_TO_TRUE, Sandesha2Constants.VALUE_TRUE);
- terminateRMMessage.getMessageContext().setTransportOut(new Sandesha2TransportOutDesc());
+
// / addTerminateSeqTransaction.commit();
-
- AxisEngine engine = new AxisEngine(configurationContext);
- try {
- engine.send(terminateRMMessage.getMessageContext());
- } catch (AxisFault e) {
- throw new SandeshaException(e.getMessage());
- }
+ SandeshaUtil.executeAndStore(terminateRMMessage, key);
}
}
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=453108&r1=453107&r2=453108
==============================================================================
--- webservices/sandesha/trunk/java/src/org/apache/sandesha2/workers/SenderWorker.java (original)
+++ webservices/sandesha/trunk/java/src/org/apache/sandesha2/workers/SenderWorker.java Wed Oct 4 22:15:55 2006
@@ -104,6 +104,7 @@
updateMessage(msgCtx);
int messageType = senderBean.getMessageType();
+
// if (messageType == Sandesha2Constants.MessageTypes.APPLICATION) {
// Sequence sequence = (Sequence) rmMsgCtx.getMessagePart(Sandesha2Constants.MessageParts.SEQUENCE);
// String sequenceID = sequence.getIdentifier().getIdentifier();
@@ -119,59 +120,66 @@
// sequence.
// TODO do piggybacking based on wsa:To
-
-
AcknowledgementManager.piggybackAcksIfPresent(rmMsgCtx, storageManager);
}
// sending the message
- TransportOutDescription transportOutDescription = msgCtx.getTransportOut();
//if a different TransportOutDesc hs already been set, it will be used instead
//of the one from te MessageContext.
if (transportOut!=null)
- transportOutDescription = transportOut;
+ msgCtx.setTransportOut(transportOut);
- TransportSender transportSender = transportOutDescription.getSender();
boolean successfullySent = false;
- if (transportSender != null) {
-
- // have to commit the transaction before sending. This may
- // get changed when WS-AT is available.
- transaction.commit();
- msgCtx.setProperty(Sandesha2Constants.WITHIN_TRANSACTION, Sandesha2Constants.VALUE_FALSE);
-
- try {
- // had to fully build the SOAP envelope to support
- // retransmissions.
- // Otherwise a 'parserAlreadyAccessed' exception could
- // get thrown in retransmissions.
- // But this has a performance reduction.
- msgCtx.getEnvelope().build();
-
- if (log.isDebugEnabled())
- log.debug("Invoking using transportSender " + transportSender + ", msgCtx="
- + msgCtx.getEnvelope().getHeader());
- // TODO change this to cater for security.
- transportSender.invoke(msgCtx);
- successfullySent = true;
- } catch (Exception e) {
- // TODO Auto-generated catch block
- String message = SandeshaMessageHelper.getMessage(SandeshaMessageKeys.sendMsgError, e
- .toString());
- log.error (message, e);
-
- } finally {
- transaction = storageManager.getTransaction();
- msgCtx.setProperty(Sandesha2Constants.WITHIN_TRANSACTION, Sandesha2Constants.VALUE_TRUE);
+ // have to commit the transaction before sending. This may
+ // get changed when WS-AT is available.
+ transaction.commit();
+ msgCtx.setProperty(Sandesha2Constants.WITHIN_TRANSACTION,
+ Sandesha2Constants.VALUE_FALSE);
+
+ try {
+
+ // had to fully build the SOAP envelope to support
+ // retransmissions.
+ // Otherwise a 'parserAlreadyAccessed' exception could
+ // get thrown in retransmissions.
+ // But this has a performance reduction.
+ msgCtx.getEnvelope().build();
+
+ ArrayList retransmittablePhases = (ArrayList) msgCtx.getProperty(Sandesha2Constants.RETRANSMITTABLE_PHASES);
+ if (retransmittablePhases!=null) {
+ msgCtx.setExecutionChain(retransmittablePhases);
+ } else {
+ ArrayList emptyExecutionChain = new ArrayList ();
+ msgCtx.setExecutionChain(emptyExecutionChain);
}
+
+ msgCtx.setCurrentHandlerIndex(0);
+ msgCtx.setCurrentPhaseIndex(0);
+ msgCtx.setPaused(false);
+
+ AxisEngine engine = new AxisEngine (msgCtx.getConfigurationContext());
+ engine.resumeSend(msgCtx);
+
+ successfullySent = true;
+ } catch (Exception e) {
+ // TODO Auto-generated catch block
+ String message = SandeshaMessageHelper.getMessage(
+ SandeshaMessageKeys.sendMsgError, e.toString());
+ log.error(message, e);
+
+ } finally {
+ transaction = storageManager.getTransaction();
+ msgCtx.setProperty(Sandesha2Constants.WITHIN_TRANSACTION,
+ Sandesha2Constants.VALUE_TRUE);
}
// update or delete only if the object is still present.
- SenderBean bean1 = senderBeanMgr.retrieve(senderBean.getMessageID());
+ SenderBean bean1 = senderBeanMgr
+ .retrieve(senderBean.getMessageID());
if (bean1 != null) {
if (senderBean.isReSend()) {
bean1.setSentCount(senderBean.getSentCount());
---------------------------------------------------------------------
To unsubscribe, e-mail: sandesha-dev-unsubscribe@ws.apache.org
For additional commands, e-mail: sandesha-dev-help@ws.apache.org