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 2007/05/31 21:48:30 UTC
svn commit: r543231 - in
/webservices/sandesha/branches/sandesha2/java/1_2/modules/core/src/main/java/org/apache/sandesha2:
i18n/ msgprocessors/ util/
Author: chamikara
Date: Thu May 31 12:48:29 2007
New Revision: 543231
URL: http://svn.apache.org/viewvc?view=rev&rev=543231
Log:
A correction to the fault handling logic to check weather the message processed is a piggybacked one, before throwing it out.
A bug fix in the MsgInitializer.
Modified:
webservices/sandesha/branches/sandesha2/java/1_2/modules/core/src/main/java/org/apache/sandesha2/i18n/SandeshaMessageKeys.java
webservices/sandesha/branches/sandesha2/java/1_2/modules/core/src/main/java/org/apache/sandesha2/msgprocessors/AckRequestedProcessor.java
webservices/sandesha/branches/sandesha2/java/1_2/modules/core/src/main/java/org/apache/sandesha2/msgprocessors/AcknowledgementProcessor.java
webservices/sandesha/branches/sandesha2/java/1_2/modules/core/src/main/java/org/apache/sandesha2/msgprocessors/CloseSequenceProcessor.java
webservices/sandesha/branches/sandesha2/java/1_2/modules/core/src/main/java/org/apache/sandesha2/msgprocessors/MakeConnectionProcessor.java
webservices/sandesha/branches/sandesha2/java/1_2/modules/core/src/main/java/org/apache/sandesha2/msgprocessors/SequenceProcessor.java
webservices/sandesha/branches/sandesha2/java/1_2/modules/core/src/main/java/org/apache/sandesha2/msgprocessors/TerminateSeqMsgProcessor.java
webservices/sandesha/branches/sandesha2/java/1_2/modules/core/src/main/java/org/apache/sandesha2/util/FaultManager.java
webservices/sandesha/branches/sandesha2/java/1_2/modules/core/src/main/java/org/apache/sandesha2/util/MsgInitializer.java
Modified: webservices/sandesha/branches/sandesha2/java/1_2/modules/core/src/main/java/org/apache/sandesha2/i18n/SandeshaMessageKeys.java
URL: http://svn.apache.org/viewvc/webservices/sandesha/branches/sandesha2/java/1_2/modules/core/src/main/java/org/apache/sandesha2/i18n/SandeshaMessageKeys.java?view=diff&rev=543231&r1=543230&r2=543231
==============================================================================
--- webservices/sandesha/branches/sandesha2/java/1_2/modules/core/src/main/java/org/apache/sandesha2/i18n/SandeshaMessageKeys.java (original)
+++ webservices/sandesha/branches/sandesha2/java/1_2/modules/core/src/main/java/org/apache/sandesha2/i18n/SandeshaMessageKeys.java Thu May 31 12:48:29 2007
@@ -233,5 +233,6 @@
public final static String noPolling="noPolling";
public final static String freeingTransport="freeingTransport";
public final static String offerRequiredForAnon = "offerRequiredForAnon";
+ public final static String couldNotSendFaultDueToException="couldNotSendFaultDueToException";
}
Modified: webservices/sandesha/branches/sandesha2/java/1_2/modules/core/src/main/java/org/apache/sandesha2/msgprocessors/AckRequestedProcessor.java
URL: http://svn.apache.org/viewvc/webservices/sandesha/branches/sandesha2/java/1_2/modules/core/src/main/java/org/apache/sandesha2/msgprocessors/AckRequestedProcessor.java?view=diff&rev=543231&r1=543230&r2=543231
==============================================================================
--- webservices/sandesha/branches/sandesha2/java/1_2/modules/core/src/main/java/org/apache/sandesha2/msgprocessors/AckRequestedProcessor.java (original)
+++ webservices/sandesha/branches/sandesha2/java/1_2/modules/core/src/main/java/org/apache/sandesha2/msgprocessors/AckRequestedProcessor.java Thu May 31 12:48:29 2007
@@ -110,6 +110,8 @@
if (log.isDebugEnabled())
log.debug("Enter: AckRequestedProcessor::processAckRequestedHeader " + soapHeader);
+ boolean piggybackedAckRequest = !(rmMsgCtx.getMessageType()==Sandesha2Constants.MessageTypes.ACK_REQUEST);
+
String sequenceId = ackRequested.getIdentifier().getIdentifier();
MessageContext msgContext = rmMsgCtx.getMessageContext();
@@ -129,14 +131,14 @@
}
// Check that the sequence requested exists
- if (FaultManager.checkForUnknownSequence(rmMsgCtx, sequenceId, storageManager)) {
+ if (FaultManager.checkForUnknownSequence(rmMsgCtx, sequenceId, storageManager, piggybackedAckRequest)) {
if (log.isDebugEnabled())
log.debug("Exit: AckRequestedProcessor::processAckRequestedHeader, Unknown sequence ");
return false;
}
// throwing a fault if the sequence is terminated
- if (FaultManager.checkForSequenceTerminated(rmMsgCtx, sequenceId, rmdBean)) {
+ if (FaultManager.checkForSequenceTerminated(rmMsgCtx, sequenceId, rmdBean, piggybackedAckRequest)) {
if (log.isDebugEnabled())
log.debug("Exit: AckRequestedProcessor::processAckRequestedHeader, Sequence terminated");
return false;
Modified: webservices/sandesha/branches/sandesha2/java/1_2/modules/core/src/main/java/org/apache/sandesha2/msgprocessors/AcknowledgementProcessor.java
URL: http://svn.apache.org/viewvc/webservices/sandesha/branches/sandesha2/java/1_2/modules/core/src/main/java/org/apache/sandesha2/msgprocessors/AcknowledgementProcessor.java?view=diff&rev=543231&r1=543230&r2=543231
==============================================================================
--- webservices/sandesha/branches/sandesha2/java/1_2/modules/core/src/main/java/org/apache/sandesha2/msgprocessors/AcknowledgementProcessor.java (original)
+++ webservices/sandesha/branches/sandesha2/java/1_2/modules/core/src/main/java/org/apache/sandesha2/msgprocessors/AcknowledgementProcessor.java Thu May 31 12:48:29 2007
@@ -103,6 +103,8 @@
if (log.isDebugEnabled())
log.debug("Enter: AcknowledgementProcessor::processAckHeader " + soapHeader);
+ boolean piggybackedAck = !(rmMsgCtx.getMessageType()==Sandesha2Constants.MessageTypes.ACK);
+
MessageContext msgCtx = rmMsgCtx.getMessageContext();
ConfigurationContext configCtx = msgCtx.getConfigurationContext();
@@ -119,12 +121,12 @@
log.debug(message);
throw new SandeshaException(message);
}
- if (FaultManager.checkForUnknownSequence(rmMsgCtx, outSequenceId, storageManager)) {
+ if (FaultManager.checkForUnknownSequence(rmMsgCtx, outSequenceId, storageManager, piggybackedAck)) {
if (log.isDebugEnabled())
log.debug("Exit: AcknowledgementProcessor::processAckHeader, Unknown sequence");
return;
}
- if (FaultManager.checkForSequenceTerminated(rmMsgCtx, outSequenceId, rmsBean)) {
+ if (FaultManager.checkForSequenceTerminated(rmMsgCtx, outSequenceId, rmsBean, piggybackedAck)) {
if (log.isDebugEnabled())
log.debug("Exit: AcknowledgementProcessor::processAckHeader, Sequence terminated");
return;
@@ -142,13 +144,13 @@
if(log.isDebugEnabled()) log.debug("Got Ack for RM Sequence: " + outSequenceId + ", internalSeqId: " + internalSequenceId);
Iterator ackRangeIterator = sequenceAck.getAcknowledgementRanges().iterator();
- if (FaultManager.checkForUnknownSequence(rmMsgCtx, outSequenceId, storageManager)) {
+ if (FaultManager.checkForUnknownSequence(rmMsgCtx, outSequenceId, storageManager, piggybackedAck)) {
if (log.isDebugEnabled())
log.debug("Exit: AcknowledgementProcessor::processAckHeader, Unknown sequence ");
return;
}
- if (FaultManager.checkForInvalidAcknowledgement(rmMsgCtx, sequenceAck, storageManager, rmsBean)) {
+ if (FaultManager.checkForInvalidAcknowledgement(rmMsgCtx, sequenceAck, storageManager, rmsBean, piggybackedAck)) {
if (log.isDebugEnabled())
log.debug("Exit: AcknowledgementProcessor::processAckHeader, Invalid Ack range ");
return;
@@ -192,7 +194,7 @@
// Check we haven't got an Ack for a message that hasn't been sent yet !
if (retransmitterBean.getSentCount() == 0) {
FaultManager.makeInvalidAcknowledgementFault(rmMsgCtx, sequenceAck, ackRange,
- storageManager);
+ storageManager, piggybackedAck);
if (log.isDebugEnabled())
log.debug("Exit: AcknowledgementProcessor::processAckHeader, Invalid Ack");
return;
Modified: webservices/sandesha/branches/sandesha2/java/1_2/modules/core/src/main/java/org/apache/sandesha2/msgprocessors/CloseSequenceProcessor.java
URL: http://svn.apache.org/viewvc/webservices/sandesha/branches/sandesha2/java/1_2/modules/core/src/main/java/org/apache/sandesha2/msgprocessors/CloseSequenceProcessor.java?view=diff&rev=543231&r1=543230&r2=543231
==============================================================================
--- webservices/sandesha/branches/sandesha2/java/1_2/modules/core/src/main/java/org/apache/sandesha2/msgprocessors/CloseSequenceProcessor.java (original)
+++ webservices/sandesha/branches/sandesha2/java/1_2/modules/core/src/main/java/org/apache/sandesha2/msgprocessors/CloseSequenceProcessor.java Thu May 31 12:48:29 2007
@@ -83,14 +83,14 @@
secManager.checkProofOfPossession(token, body, msgCtx);
}
- if (FaultManager.checkForUnknownSequence(rmMsgCtx, sequenceId, storageManager)) {
+ if (FaultManager.checkForUnknownSequence(rmMsgCtx, sequenceId, storageManager, false)) {
if (log.isDebugEnabled())
log.debug("Exit: CloseSequenceProcessor::processInMessage, Unknown sequence " + sequenceId);
return false;
}
// throwing a fault if the sequence is terminated
- if (FaultManager.checkForSequenceTerminated(rmMsgCtx, sequenceId, rmdBean)) {
+ if (FaultManager.checkForSequenceTerminated(rmMsgCtx, sequenceId, rmdBean, false)) {
if (log.isDebugEnabled())
log.debug("Exit: CloseSequenceProcessor::processInMessage, Sequence terminated");
return false;
Modified: webservices/sandesha/branches/sandesha2/java/1_2/modules/core/src/main/java/org/apache/sandesha2/msgprocessors/MakeConnectionProcessor.java
URL: http://svn.apache.org/viewvc/webservices/sandesha/branches/sandesha2/java/1_2/modules/core/src/main/java/org/apache/sandesha2/msgprocessors/MakeConnectionProcessor.java?view=diff&rev=543231&r1=543230&r2=543231
==============================================================================
--- webservices/sandesha/branches/sandesha2/java/1_2/modules/core/src/main/java/org/apache/sandesha2/msgprocessors/MakeConnectionProcessor.java (original)
+++ webservices/sandesha/branches/sandesha2/java/1_2/modules/core/src/main/java/org/apache/sandesha2/msgprocessors/MakeConnectionProcessor.java Thu May 31 12:48:29 2007
@@ -127,7 +127,7 @@
SenderBean matchingMessage,
StorageManager storageManager,
boolean pending,
- String namespace,
+ String makeConnectionNamespace,
Transaction transaction)
throws AxisFault
{
@@ -149,7 +149,7 @@
return;
}
- if(pending) addMessagePendingHeader(returnMessage, namespace);
+ if(pending) addMessagePendingHeader(returnMessage, makeConnectionNamespace);
RMMsgContext returnRMMsg = MsgInitializer.initializeMessage(returnMessage);
if(returnRMMsg.getRMNamespaceValue()==null){
Modified: webservices/sandesha/branches/sandesha2/java/1_2/modules/core/src/main/java/org/apache/sandesha2/msgprocessors/SequenceProcessor.java
URL: http://svn.apache.org/viewvc/webservices/sandesha/branches/sandesha2/java/1_2/modules/core/src/main/java/org/apache/sandesha2/msgprocessors/SequenceProcessor.java?view=diff&rev=543231&r1=543230&r2=543231
==============================================================================
--- webservices/sandesha/branches/sandesha2/java/1_2/modules/core/src/main/java/org/apache/sandesha2/msgprocessors/SequenceProcessor.java (original)
+++ webservices/sandesha/branches/sandesha2/java/1_2/modules/core/src/main/java/org/apache/sandesha2/msgprocessors/SequenceProcessor.java Thu May 31 12:48:29 2007
@@ -139,21 +139,21 @@
throw new SandeshaException(message);
}
- if (FaultManager.checkForUnknownSequence(rmMsgCtx, sequenceId, storageManager)) {
+ if (FaultManager.checkForUnknownSequence(rmMsgCtx, sequenceId, storageManager, false)) {
if (log.isDebugEnabled())
log.debug("Exit: SequenceProcessor::processReliableMessage, Unknown sequence");
return InvocationResponse.ABORT;
}
// throwing a fault if the sequence is terminated
- if (FaultManager.checkForSequenceTerminated(rmMsgCtx, sequenceId, bean)) {
+ if (FaultManager.checkForSequenceTerminated(rmMsgCtx, sequenceId, bean, false)) {
if (log.isDebugEnabled())
log.debug("Exit: SequenceProcessor::processReliableMessage, Sequence terminated");
return InvocationResponse.ABORT;
}
// throwing a fault if the sequence is closed.
- if (FaultManager.checkForSequenceClosed(rmMsgCtx, sequenceId, bean)) {
+ if (FaultManager.checkForSequenceClosed(rmMsgCtx, sequenceId, bean, false)) {
if (log.isDebugEnabled())
log.debug("Exit: SequenceProcessor::processReliableMessage, Sequence closed");
return InvocationResponse.ABORT;
Modified: webservices/sandesha/branches/sandesha2/java/1_2/modules/core/src/main/java/org/apache/sandesha2/msgprocessors/TerminateSeqMsgProcessor.java
URL: http://svn.apache.org/viewvc/webservices/sandesha/branches/sandesha2/java/1_2/modules/core/src/main/java/org/apache/sandesha2/msgprocessors/TerminateSeqMsgProcessor.java?view=diff&rev=543231&r1=543230&r2=543231
==============================================================================
--- webservices/sandesha/branches/sandesha2/java/1_2/modules/core/src/main/java/org/apache/sandesha2/msgprocessors/TerminateSeqMsgProcessor.java (original)
+++ webservices/sandesha/branches/sandesha2/java/1_2/modules/core/src/main/java/org/apache/sandesha2/msgprocessors/TerminateSeqMsgProcessor.java Thu May 31 12:48:29 2007
@@ -100,7 +100,7 @@
secManager.checkProofOfPossession(token, body, terminateSeqRMMsg.getMessageContext());
}
- if (FaultManager.checkForUnknownSequence(terminateSeqRMMsg, sequenceId, storageManager)) {
+ if (FaultManager.checkForUnknownSequence(terminateSeqRMMsg, sequenceId, storageManager, false)) {
if (log.isDebugEnabled())
log.debug("Exit: TerminateSeqMsgProcessor::processInMessage, unknown sequence");
return false;
Modified: webservices/sandesha/branches/sandesha2/java/1_2/modules/core/src/main/java/org/apache/sandesha2/util/FaultManager.java
URL: http://svn.apache.org/viewvc/webservices/sandesha/branches/sandesha2/java/1_2/modules/core/src/main/java/org/apache/sandesha2/util/FaultManager.java?view=diff&rev=543231&r1=543230&r2=543231
==============================================================================
--- webservices/sandesha/branches/sandesha2/java/1_2/modules/core/src/main/java/org/apache/sandesha2/util/FaultManager.java (original)
+++ webservices/sandesha/branches/sandesha2/java/1_2/modules/core/src/main/java/org/apache/sandesha2/util/FaultManager.java Thu May 31 12:48:29 2007
@@ -42,6 +42,7 @@
import org.apache.axis2.context.MessageContext;
import org.apache.axis2.context.OperationContext;
import org.apache.axis2.description.AxisOperation;
+import org.apache.axis2.description.WSDL2Constants;
import org.apache.axis2.engine.AxisEngine;
import org.apache.axis2.engine.MessageReceiver;
import org.apache.axis2.engine.Handler.InvocationResponse;
@@ -68,6 +69,7 @@
import org.apache.sandesha2.storage.beans.RMSequenceBean;
import org.apache.sandesha2.storage.beans.SenderBean;
import org.apache.sandesha2.wsrm.AcknowledgementRange;
+import org.apache.sandesha2.wsrm.FaultCode;
import org.apache.sandesha2.wsrm.SequenceAcknowledgement;
import org.apache.sandesha2.wsrm.SequenceFault;
@@ -152,7 +154,7 @@
* @throws SandeshaException
*/
public static boolean checkForUnknownSequence(RMMsgContext rmMessageContext, String sequenceID,
- StorageManager storageManager) throws AxisFault {
+ StorageManager storageManager, boolean piggybackedMessage) throws AxisFault {
if (log.isDebugEnabled())
log.debug("Enter: FaultManager::checkForUnknownSequence, " + sequenceID);
@@ -199,7 +201,9 @@
if (log.isDebugEnabled())
log.debug("Exit: FaultManager::checkForUnknownSequence, Sequence unknown");
- getOrSendFault(rmMessageContext, data);
+
+ boolean faultThrowable = !piggybackedMessage;
+ getOrSendFault(rmMessageContext, data, faultThrowable);
return true;
}
@@ -217,7 +221,7 @@
* @throws SandeshaException
*/
public static boolean checkForInvalidAcknowledgement(RMMsgContext ackRMMessageContext, SequenceAcknowledgement sequenceAcknowledgement,
- StorageManager storageManager, RMSBean rmsBean)
+ StorageManager storageManager, RMSBean rmsBean, boolean piggybackedMessage)
throws AxisFault {
if (log.isDebugEnabled())
log.debug("Enter: FaultManager::checkForInvalidAcknowledgement");
@@ -247,7 +251,7 @@
if (invalidAck) {
makeInvalidAcknowledgementFault(ackRMMessageContext, sequenceAcknowledgement,
- acknowledgementRange, storageManager);
+ acknowledgementRange, storageManager, piggybackedMessage);
return true;
}
}
@@ -266,7 +270,7 @@
*/
public static void makeInvalidAcknowledgementFault(RMMsgContext rmMsgCtx,
SequenceAcknowledgement sequenceAcknowledgement, AcknowledgementRange acknowledgementRange,
- StorageManager storageManager) throws AxisFault {
+ StorageManager storageManager, boolean piggybackedMessage) throws AxisFault {
FaultData data = new FaultData();
int SOAPVersion = SandeshaUtil.getSOAPVersion(rmMsgCtx.getMessageContext().getEnvelope());
if (SOAPVersion == Sandesha2Constants.SOAPVersion.v1_1)
@@ -294,7 +298,9 @@
if (log.isDebugEnabled())
log.debug("Exit: FaultManager::checkForInvalidAcknowledgement, invalid ACK");
- getOrSendFault(rmMsgCtx, data);
+
+ boolean throwable = !piggybackedMessage;
+ getOrSendFault(rmMsgCtx, data, throwable);
}
/**
@@ -337,7 +343,7 @@
if (log.isDebugEnabled())
log.debug("Exit: FaultManager::makeCreateSequenceRefusedFault");
- getOrSendFault(rmMessageContext, data);
+ getOrSendFault(rmMessageContext, data, true);
}
/**
@@ -348,7 +354,8 @@
* @return
* @throws AxisFault
*/
- public static boolean checkForSequenceTerminated(RMMsgContext referenceRMMessage, String sequenceID, RMSequenceBean bean)
+ public static boolean checkForSequenceTerminated(RMMsgContext referenceRMMessage, String sequenceID, RMSequenceBean bean
+ , boolean piggybackedMessage)
throws AxisFault {
if (log.isDebugEnabled())
@@ -378,7 +385,9 @@
if (log.isDebugEnabled())
log.debug("Exit: FaultManager::checkForSequenceClosed, sequence closed");
- getOrSendFault(referenceRMMessage, data);
+
+ boolean throwable = !piggybackedMessage;
+ getOrSendFault(referenceRMMessage, data, throwable);
return true;
}
@@ -388,7 +397,7 @@
}
public static boolean checkForSequenceClosed(RMMsgContext referenceRMMessage, String sequenceID,
- RMDBean rmdBean) throws AxisFault {
+ RMDBean rmdBean, boolean piggybackedMessage) throws AxisFault {
if (log.isDebugEnabled())
log.debug("Enter: FaultManager::checkForSequenceClosed, " + sequenceID);
@@ -416,7 +425,9 @@
if (log.isDebugEnabled())
log.debug("Exit: FaultManager::checkForSequenceClosed, sequence closed");
- getOrSendFault(referenceRMMessage, data);
+
+ boolean throwable = !piggybackedMessage;
+ getOrSendFault(referenceRMMessage, data,throwable);
return true;
}
@@ -431,11 +442,17 @@
*
* @param referenceRMMsgContext - Message in reference to which the fault will be generated.
* @param data - data for the fault
+ * @param throwable - This tells weather or not it is ok to throw the fault out. I.e. this should not be done when processing
+ * piggybacked acks since this will stop the carrier message from being processed.
* @return - The dummy fault to be thrown out.
*
* @throws AxisFault
*/
- public static void getOrSendFault(RMMsgContext referenceRMMsgContext, FaultData data) throws AxisFault {
+ public static void getOrSendFault(RMMsgContext referenceRMMsgContext, FaultData data, boolean throwable) throws AxisFault {
+
+
+
+
SOAPFactory factory = (SOAPFactory) referenceRMMsgContext.getSOAPEnvelope().getOMFactory();
SOAPFaultCode faultCode = factory.createSOAPFaultCode();
@@ -459,31 +476,66 @@
String SOAPNamespaceValue = factory.getSoapVersionURI();
- reason.setText(data.getReason());
- referenceRMMsgContext.setProperty(SOAP11Constants.SOAP_FAULT_CODE_LOCAL_NAME, faultCode);
- referenceRMMsgContext.setProperty(SOAP11Constants.SOAP_FAULT_DETAIL_LOCAL_NAME, detail);
- referenceRMMsgContext.setProperty(SOAP11Constants.SOAP_FAULT_STRING_LOCAL_NAME, reason);
- // Need to send this message as the Axis Layer doesn't set the "SequenceFault" header
- MessageContext faultMessageContext =
- MessageContextBuilder.createFaultMessageContext(referenceRMMsgContext.getMessageContext(), null);
+ if (SOAP12Constants.SOAP_ENVELOPE_NAMESPACE_URI.equals(SOAPNamespaceValue)) {
+ reason.addSOAPText(reasonText);
+ referenceRMMsgContext.setProperty(SOAP12Constants.SOAP_FAULT_CODE_LOCAL_NAME, faultCode);
+ referenceRMMsgContext.setProperty(SOAP12Constants.SOAP_FAULT_REASON_LOCAL_NAME, reason);
+ referenceRMMsgContext.setProperty(SOAP12Constants.SOAP_FAULT_DETAIL_LOCAL_NAME, detail);
+ } else if (SOAP11Constants.SOAP_ENVELOPE_NAMESPACE_URI.equals (SOAPNamespaceValue)) {
+ reason.setText(data.getReason());
+ referenceRMMsgContext.setProperty(SOAP11Constants.SOAP_FAULT_CODE_LOCAL_NAME, faultCode);
+ referenceRMMsgContext.setProperty(SOAP11Constants.SOAP_FAULT_DETAIL_LOCAL_NAME, detail);
+ referenceRMMsgContext.setProperty(SOAP11Constants.SOAP_FAULT_STRING_LOCAL_NAME, reason);
+ // Need to send this message as the Axis Layer doesn't set the "SequenceFault" header
+ MessageContext faultMessageContext =
+ MessageContextBuilder.createFaultMessageContext(referenceRMMsgContext.getMessageContext(), null);
- SOAPFaultEnvelopeCreator.addSOAPFaultEnvelope(faultMessageContext, Sandesha2Constants.SOAPVersion.v1_1, data, referenceRMMsgContext.getRMNamespaceValue());
+ SOAPFaultEnvelopeCreator.addSOAPFaultEnvelope(faultMessageContext, Sandesha2Constants.SOAPVersion.v1_1, data, referenceRMMsgContext.getRMNamespaceValue());
- referenceRMMsgContext.getMessageContext().getOperationContext().setProperty(
+ referenceRMMsgContext.getMessageContext().getOperationContext().setProperty(
org.apache.axis2.Constants.RESPONSE_WRITTEN, Constants.VALUE_TRUE);
- // Set the action
- faultMessageContext.setWSAAction(
+ // Set the action
+ faultMessageContext.setWSAAction(
SpecSpecificConstants.getAddressingFaultAction(referenceRMMsgContext.getRMSpecVersion()));
- if (log.isDebugEnabled())
- log.debug("Sending fault message " + faultMessageContext.getEnvelope().getHeader());
- // Send the message
- AxisEngine engine = new AxisEngine(faultMessageContext.getConfigurationContext());
- engine.sendFault(faultMessageContext);
+ if (log.isDebugEnabled())
+ log.debug("Sending fault message " + faultMessageContext.getEnvelope().getHeader());
+
+ // Sending the message
+ //having a surrounded try block will make sure that the error is logged here
+ //and that this does not disturb the processing of a carrier message.
+ try {
+ AxisEngine engine = new AxisEngine(faultMessageContext.getConfigurationContext());
+ engine.sendFault(faultMessageContext);
+ } catch (Exception e) {
+ AxisFault fault = new AxisFault(faultColdValue.getTextAsQName(), data.getReason(), "", "", data.getDetail());
+ String message = SandeshaMessageHelper.getMessage(SandeshaMessageKeys.couldNotSendFaultDueToException, fault.getMessage(), e.getMessage());
+ log.error(message);
+ }
- return;
+ return;
+
+ } else {
+ String message = SandeshaMessageHelper.getMessage(SandeshaMessageKeys.unknownSoapVersion);
+ throw new SandeshaException (message);
+ }
+
+ AxisFault fault = new AxisFault(faultColdValue.getTextAsQName(), data.getReason(), "", "", data.getDetail());
+ fault.setFaultAction(SpecSpecificConstants.getAddressingFaultAction(referenceRMMsgContext.getRMSpecVersion()));
+
+ //if this is throwable throwing it out, else we will log here.
+
+ if (throwable)
+ throw fault;
+ else
+ log.error("Sandesha2 got a fault when processing the message essage " + referenceRMMsgContext.getMessageId(), fault);
+
}
+
+
+
+
public static boolean isRMFault (String faultSubcodeValue) {
if (faultSubcodeValue==null)
@@ -653,7 +705,7 @@
data.setType(Sandesha2Constants.SOAPFaults.FaultType.MESSAGE_NUMBER_ROLLOVER);
- getOrSendFault(rmMessageContext, data);
+ getOrSendFault(rmMessageContext, data, true);
return true;
}
Modified: webservices/sandesha/branches/sandesha2/java/1_2/modules/core/src/main/java/org/apache/sandesha2/util/MsgInitializer.java
URL: http://svn.apache.org/viewvc/webservices/sandesha/branches/sandesha2/java/1_2/modules/core/src/main/java/org/apache/sandesha2/util/MsgInitializer.java?view=diff&rev=543231&r1=543230&r2=543231
==============================================================================
--- webservices/sandesha/branches/sandesha2/java/1_2/modules/core/src/main/java/org/apache/sandesha2/util/MsgInitializer.java (original)
+++ webservices/sandesha/branches/sandesha2/java/1_2/modules/core/src/main/java/org/apache/sandesha2/util/MsgInitializer.java Thu May 31 12:48:29 2007
@@ -157,7 +157,9 @@
if (elements.getMessagePending() != null) {
rmMsgContext.setMessagePart(Sandesha2Constants.MessageParts.MESSAGE_PENDING,
elements.getMessagePending());
- rmNamespace = elements.getMessagePending().getNamespaceValue();
+ String makeConnectionNamespace = elements.getMessagePending().getNamespaceValue();
+ if (Sandesha2Constants.SPEC_2007_02.MC_NS_URI.equals(makeConnectionNamespace))
+ rmNamespace = Sandesha2Constants.SPEC_2007_02.NS_URI;
}
if (elements.getSequenceFault() != null) {
---------------------------------------------------------------------
To unsubscribe, e-mail: sandesha-dev-unsubscribe@ws.apache.org
For additional commands, e-mail: sandesha-dev-help@ws.apache.org