Author: boisvert Date: Wed Apr 25 11:10:54 2007 New Revision: 532432 URL: http://svn.apache.org/viewvc?view=rev&rev=532432 Log: invokeBusinessLogic() needs to run in same thread due to XML streaming
Modified: incubator/ode/trunk/axis2/src/main/java/org/apache/ode/axis2/hooks/ODEMessageReceiver.java Modified: incubator/ode/trunk/axis2/src/main/java/org/apache/ode/axis2/hooks/ODEMessageReceiver.java URL: http://svn.apache.org/viewvc/incubator/ode/trunk/axis2/src/main/java/org/apache/ode/axis2/hooks/ODEMessageReceiver.java?view=diff&rev=532432&r1=532431&r2=532432 ============================================================================== --- incubator/ode/trunk/axis2/src/main/java/org/apache/ode/axis2/hooks/ODEMessageReceiver.java (original) +++ incubator/ode/trunk/axis2/src/main/java/org/apache/ode/axis2/hooks/ODEMessageReceiver.java Wed Apr 25 11:10:54 2007 @@ -29,8 +29,6 @@ import org.apache.commons.logging.LogFactory; import org.apache.ode.axis2.ODEService; -import java.util.concurrent.ExecutorService; - /** * Receives messages forwarded by Axis. */ @@ -39,37 +37,29 @@ private static final Log __log = LogFactory.getLog(ODEMessageReceiver.class); private ODEService _service; - @SuppressWarnings("unused") - private ExecutorService _executorService; public final void receive(final MessageContext msgContext) throws AxisFault { - if (__log.isDebugEnabled()) - __log.debug("Received message for " + msgContext.getAxisService().getName() + - "." + msgContext.getAxisOperation().getName()); if (hasResponse(msgContext.getAxisOperation())) { + if (__log.isDebugEnabled()) + __log.debug("Received request message for " + msgContext.getAxisService().getName() + "." + + msgContext.getAxisOperation().getName()); // Client is expecting a response, running in the same thread MessageContext outMsgContext = Utils.createOutMessageContext(msgContext); outMsgContext.getOperationContext().addMessageContext(outMsgContext); invokeBusinessLogic(msgContext, outMsgContext); if (__log.isDebugEnabled()) { - __log.debug("Reply for " + msgContext.getAxisService().getName() + - "." + msgContext.getAxisOperation().getName()); + __log.debug("Reply for " + msgContext.getAxisService().getName() + "." + + msgContext.getAxisOperation().getName()); __log.debug("Reply message " + outMsgContext.getEnvelope()); } - AxisEngine engine = new AxisEngine( - msgContext.getOperationContext().getServiceContext().getConfigurationContext()); + AxisEngine engine = new AxisEngine(msgContext.getOperationContext().getServiceContext() + .getConfigurationContext()); engine.send(outMsgContext); } else { - // No response expected, this thread doesn't need us - _executorService.submit(new Runnable() { - public void run() { - try { + if (__log.isDebugEnabled()) + __log.debug("Received one-way message for " + msgContext.getAxisService().getName() + "." + + msgContext.getAxisOperation().getName()); invokeBusinessLogic(msgContext, null); - } catch (AxisFault axisFault) { - __log.error("Error processing in-only message.", axisFault); - } - } - }); } } @@ -82,17 +72,18 @@ _service = service; } - public void setExecutorService(ExecutorService executorService) { - _executorService = executorService; - } - private boolean hasResponse(AxisOperation op) { - switch(op.getAxisSpecifMEPConstant()) { - case AxisOperation.WSDL20_2004Constants.MEP_CONSTANT_IN_OUT: return true; - case AxisOperation.WSDL20_2004Constants.MEP_CONSTANT_OUT_ONLY: return true; - case AxisOperation.WSDL20_2004Constants.MEP_CONSTANT_OUT_OPTIONAL_IN: return true; - case AxisOperation.WSDL20_2004Constants.MEP_CONSTANT_ROBUST_OUT_ONLY: return true; - default: return false; + switch (op.getAxisSpecifMEPConstant()) { + case AxisOperation.WSDL20_2004Constants.MEP_CONSTANT_IN_OUT: + return true; + case AxisOperation.WSDL20_2004Constants.MEP_CONSTANT_OUT_ONLY: + return true; + case AxisOperation.WSDL20_2004Constants.MEP_CONSTANT_OUT_OPTIONAL_IN: + return true; + case AxisOperation.WSDL20_2004Constants.MEP_CONSTANT_ROBUST_OUT_ONLY: + return true; + default: + return false; } } }