Author: gatfora
Date: Tue Feb 13 09:00:16 2007
New Revision: 507098

URL: http://svn.apache.org/viewvc?view=rev&rev=507098
Log:
Handle exceptions generated when generating a fault message inside the 
InvokerWorker

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/workers/InvokerWorker.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=507098&r1=507097&r2=507098
==============================================================================
--- 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/Sandesha2Constants.java
 (original)
+++ 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/Sandesha2Constants.java
 Tue Feb 13 09:00:16 2007
@@ -469,8 +469,6 @@
        
        static final String POST_FAILURE_MESSAGE = "PostFailureMessage";
        
-       static final String REINJECTED_MESSAGE = "ReinjectedMessage";
-       
        static final String MODULE_CLASS_LOADER = "Sandesha2ModuleClassLoader";
        
        static final String SECURITY_MANAGER = "Sandesha2SecurityManager";

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=507098&r1=507097&r2=507098
==============================================================================
--- 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/handlers/SandeshaInHandler.java
 (original)
+++ 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/handlers/SandeshaInHandler.java
 Tue Feb 13 09:00:16 2007
@@ -76,18 +76,10 @@
                }
 
                String DONE = (String) 
msgCtx.getProperty(Sandesha2Constants.APPLICATION_PROCESSING_DONE);
-               if (null != DONE && "true".equals(DONE)) {
+               if (null != DONE && Sandesha2Constants.VALUE_TRUE.equals(DONE)) 
{
                        if (log.isDebugEnabled())
                                log.debug("Exit: SandeshaInHandler::invoke, 
Application processing done " + returnValue);
                        return returnValue;
-               }
-
-               String reinjectedMessage = (String) 
msgCtx.getProperty(Sandesha2Constants.REINJECTED_MESSAGE);
-               if (reinjectedMessage != null && 
Sandesha2Constants.VALUE_TRUE.equals(reinjectedMessage)) {
-                       if (log.isDebugEnabled())
-                               log.debug("Exit: SandeshaInHandler::invoke, 
reinjectedMessage " + returnValue);
-                       return returnValue; // Reinjected messages are not 
processed by Sandesha2 inflow
-                                       // handlers
                }
                
                if (log.isDebugEnabled()) log.debug("SandeshaInHandler::invoke 
Continuing beyond basic checks");

Modified: 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/workers/InvokerWorker.java
URL: 
http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/src/org/apache/sandesha2/workers/InvokerWorker.java?view=diff&rev=507098&r1=507097&r2=507098
==============================================================================
--- 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/workers/InvokerWorker.java
 (original)
+++ 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/workers/InvokerWorker.java
 Tue Feb 13 09:00:16 2007
@@ -1,9 +1,12 @@
 package org.apache.sandesha2.workers;
 
+import org.apache.axis2.AxisFault;
 import org.apache.axis2.addressing.AddressingConstants;
 import org.apache.axis2.context.ConfigurationContext;
 import org.apache.axis2.context.MessageContext;
 import org.apache.axis2.engine.AxisEngine;
+import org.apache.axis2.transport.http.HTTPConstants;
+import org.apache.axis2.util.MessageContextBuilder;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.sandesha2.RMMsgContext;
@@ -35,7 +38,7 @@
        }
        
        public void run() {
-               if(log.isDebugEnabled()) log.debug("Entry: InvokerWorker::run");
+               if(log.isDebugEnabled()) log.debug("Enter: InvokerWorker::run");
                
                Transaction transaction = null;
                MessageContext msgToInvoke = null;
@@ -62,8 +65,6 @@
                                transaction.commit();
                                transaction = null;
                        }
-                               
-                       boolean invoked = false;
                        
                        try {
 
@@ -78,7 +79,7 @@
                                                && 
Sandesha2Constants.VALUE_TRUE.equals(postFaulureProperty))
                                        postFailureInvocation = true;
 
-                               AxisEngine engine = new 
AxisEngine(configurationContext);
+                               AxisEngine engine = new 
AxisEngine(msgToInvoke.getConfigurationContext());
                                if (postFailureInvocation) {
                                        
makeMessageReadyForReinjection(msgToInvoke);
                                        if (log.isDebugEnabled())
@@ -92,16 +93,12 @@
                                        msgToInvoke.setPaused(false);
                                        engine.resumeReceive(msgToInvoke);
                                }
-                               
-                               invoked = true;
 
                        } catch (Exception e) {
                                if (log.isDebugEnabled())
                                        log.debug("Exception :", e);
 
                                handleFault(msgToInvoke, e);
-
-                               // throw new SandeshaException(e);
                        }
                                
                        //starting a transaction for the post-invocation work.
@@ -153,14 +150,13 @@
                                        throw new SandeshaException (message);
                                }
                                
-                               if (invoked) {
-                                       nextMsgNo++;
-                                       
rMDBean.setNextMsgNoToProcess(nextMsgNo);
-                                       nextMsgMgr.update(rMDBean);
-                               }                               
+                               nextMsgNo++;
+                               rMDBean.setNextMsgNoToProcess(nextMsgNo);
+                               nextMsgMgr.update(rMDBean);
                        }
                } catch (Exception e) {
-                       log.error(e.toString(), e);
+                       if (log.isErrorEnabled())
+                               log.error(e.toString(), e);
                        if(transaction != null) {
                                transaction.rollback();
                                transaction = null;
@@ -181,14 +177,22 @@
                messageContext.getOptions().setMessageId(null);
                messageContext.getOptions().setTo(null);
                messageContext.getOptions().setAction(null);
-               
messageContext.setProperty(Sandesha2Constants.REINJECTED_MESSAGE, 
Sandesha2Constants.VALUE_TRUE);
+               
messageContext.setProperty(Sandesha2Constants.APPLICATION_PROCESSING_DONE, 
Sandesha2Constants.VALUE_TRUE);
        }
 
-       private void handleFault(MessageContext inMsgContext, Exception e) 
throws Exception {
-               // msgContext.setProperty(MessageContext.TRANSPORT_OUT, out);
+       private void handleFault(MessageContext inMsgContext, Exception e) {
                AxisEngine engine = new 
AxisEngine(inMsgContext.getConfigurationContext());
-               MessageContext faultContext = 
engine.createFaultMessageContext(inMsgContext, e);
-               engine.sendFault(faultContext);
+               try {                                   
+                       MessageContext faultContext = 
MessageContextBuilder.createFaultMessageContext(inMsgContext, e);
+                       // Copy some of the parameters to the new message 
context.
+                       faultContext.setProperty(HTTPConstants.CONTENT_TYPE, 
inMsgContext
+                                       
.getProperty(HTTPConstants.CONTENT_TYPE));
+
+                       engine.sendFault(faultContext);
+               } catch (AxisFault e1) {
+                       if (log.isErrorEnabled())
+                               log.error("Unable to send fault message ", e1);
+               }
        }
        
 }



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to