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