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 ga...@apache.org on 2007/05/14 18:00:11 UTC
svn commit: r537897 - in
/webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2:
handlers/SandeshaGlobalInHandler.java util/FaultManager.java
Author: gatfora
Date: Mon May 14 09:00:10 2007
New Revision: 537897
URL: http://svn.apache.org/viewvc?view=rev&rev=537897
Log:
Abort processing for RM faults once processed
Modified:
webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/handlers/SandeshaGlobalInHandler.java
webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/util/FaultManager.java
Modified: webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/handlers/SandeshaGlobalInHandler.java
URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/handlers/SandeshaGlobalInHandler.java?view=diff&rev=537897&r1=537896&r2=537897
==============================================================================
--- webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/handlers/SandeshaGlobalInHandler.java (original)
+++ webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/handlers/SandeshaGlobalInHandler.java Mon May 14 09:00:10 2007
@@ -127,23 +127,17 @@
SandeshaUtil.getSandeshaStorageManager(rmMsgCtx.getConfigurationContext(),
rmMsgCtx.getConfigurationContext().getAxisConfiguration());
- Transaction transaction = storageManager.getTransaction();
- try {
- //processing any incoming faults.
- //This is responsible for Sandesha2 specific
- FaultManager.processMessagesForFaults(rmMsgCtx);
- }
- finally {
- transaction.commit();
- }
+ //processing any incoming faults.
+ //This is responsible for Sandesha2 specific
+ InvocationResponse response = FaultManager.processMessagesForFaults(rmMsgCtx, storageManager);
if (rmMsgCtx.getMessageType() == Sandesha2Constants.MessageTypes.APPLICATION) {
processApplicationMessage(rmMsgCtx);
}
if (log.isDebugEnabled())
- log.debug("Exit: SandeshaGlobalInHandler::invoke " + InvocationResponse.CONTINUE);
- return InvocationResponse.CONTINUE;
+ log.debug("Exit: SandeshaGlobalInHandler::invoke " + response);
+ return response;
}
private static void processApplicationMessage(RMMsgContext rmMsgCtx) throws AxisFault {
Modified: webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/util/FaultManager.java
URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/util/FaultManager.java?view=diff&rev=537897&r1=537896&r2=537897
==============================================================================
--- webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/util/FaultManager.java (original)
+++ webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/util/FaultManager.java Mon May 14 09:00:10 2007
@@ -44,6 +44,7 @@
import org.apache.axis2.description.AxisOperation;
import org.apache.axis2.engine.AxisEngine;
import org.apache.axis2.engine.MessageReceiver;
+import org.apache.axis2.engine.Handler.InvocationResponse;
import org.apache.axis2.util.CallbackReceiver;
import org.apache.axis2.util.MessageContextBuilder;
import org.apache.axis2.wsdl.WSDLConstants;
@@ -59,6 +60,7 @@
import org.apache.sandesha2.i18n.SandeshaMessageKeys;
import org.apache.sandesha2.storage.SandeshaStorageException;
import org.apache.sandesha2.storage.StorageManager;
+import org.apache.sandesha2.storage.Transaction;
import org.apache.sandesha2.storage.beanmanagers.RMSBeanMgr;
import org.apache.sandesha2.storage.beanmanagers.SenderBeanMgr;
import org.apache.sandesha2.storage.beans.RMDBean;
@@ -516,8 +518,11 @@
}
- private static void manageIncomingFault (AxisFault fault, RMMsgContext rmMsgCtx, SOAPFault faultPart) throws AxisFault {
+ private static InvocationResponse manageIncomingFault (AxisFault fault, RMMsgContext rmMsgCtx, SOAPFault faultPart) throws AxisFault {
+ if (log.isDebugEnabled())
+ log.debug("Enter: FaultManager::manageIncomingFault");
+ InvocationResponse response = InvocationResponse.CONTINUE;
if (log.isErrorEnabled())
log.error(fault);
@@ -573,23 +578,46 @@
Sandesha2Constants.SOAPFaults.Subcodes.SEQUENCE_TERMINATED.equals(soapFaultSubcode) ) {
processSequenceUnknownFault(rmMsgCtx, fault, identifier);
}
+
+ // If the operation is an Sandesha In Only operation, or the fault is a recognised fault,
+ // then stop the message from being processed further.
+ // To configure the actions for Sandesha to drop, add them to the module.xml under
+ // Sandesha2InOnly operation.
+ if (isRMFault(soapFaultSubcode))
+ response = InvocationResponse.ABORT;
+
+ if (log.isDebugEnabled())
+ log.debug("Exit: FaultManager::manageIncomingFault, " + response);
+ return response;
}
- public static void processMessagesForFaults (RMMsgContext rmMsgCtx) throws AxisFault {
+ public static InvocationResponse processMessagesForFaults (RMMsgContext rmMsgCtx, StorageManager storageManager) throws AxisFault {
+
+ InvocationResponse response = InvocationResponse.CONTINUE;
SOAPEnvelope envelope = rmMsgCtx.getSOAPEnvelope();
if (envelope==null)
- return;
+ return response;
SOAPFault faultPart = envelope.getBody().getFault();
if (faultPart != null) {
-
- // constructing the fault
- AxisFault axisFault = getAxisFaultFromFromSOAPFault(faultPart);
- manageIncomingFault (axisFault, rmMsgCtx, faultPart);
+ Transaction transaction = null;
+
+ try {
+ transaction = storageManager.getTransaction();
+ // constructing the fault
+ AxisFault axisFault = getAxisFaultFromFromSOAPFault(faultPart);
+ response = manageIncomingFault (axisFault, rmMsgCtx, faultPart);
+
+ if(transaction != null && transaction.isActive()) transaction.commit();
+ transaction = null;
+ } finally {
+ if (transaction != null && transaction.isActive())
+ transaction.rollback();
+ }
}
-
+ return response;
}
---------------------------------------------------------------------
To unsubscribe, e-mail: sandesha-dev-unsubscribe@ws.apache.org
For additional commands, e-mail: sandesha-dev-help@ws.apache.org