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