You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-dev@axis.apache.org by he...@apache.org on 2007/06/12 23:04:27 UTC
svn commit: r546634 -
/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/receivers/AbstractInOutAsyncMessageReceiver.java
Author: hemapani
Date: Tue Jun 12 14:04:26 2007
New Revision: 546634
URL: http://svn.apache.org/viewvc?view=rev&rev=546634
Log:
fix https://issues.apache.org/jira/browse/AXIS2-1363
Modified:
webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/receivers/AbstractInOutAsyncMessageReceiver.java
Modified: webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/receivers/AbstractInOutAsyncMessageReceiver.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/receivers/AbstractInOutAsyncMessageReceiver.java?view=diff&rev=546634&r1=546633&r2=546634
==============================================================================
--- webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/receivers/AbstractInOutAsyncMessageReceiver.java (original)
+++ webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/receivers/AbstractInOutAsyncMessageReceiver.java Tue Jun 12 14:04:26 2007
@@ -18,6 +18,8 @@
package org.apache.axis2.receivers;
import org.apache.axis2.AxisFault;
+
+import org.apache.axis2.addressing.AddressingConstants;
import org.apache.axis2.context.MessageContext;
import org.apache.axis2.engine.AxisEngine;
import org.apache.axis2.util.MessageContextBuilder;
@@ -33,7 +35,7 @@
public abstract void invokeBusinessLogic(MessageContext inMessage,
MessageContext outMessage) throws AxisFault;
- public final void receive(final MessageContext messageCtx) {
+ public final void receive(final MessageContext messageCtx) throws AxisFault {
final ServerCallback callback = new ServerCallback() {
public void handleResult(MessageContext result) throws AxisFault {
AxisEngine.send(result);
@@ -47,31 +49,57 @@
AxisEngine.sendFault(faultContext);
}
};
- Runnable theadedTask = new Runnable() {
- public void run() {
+
+
+ AsyncMessageReceiverWorker theadedTask = new AsyncMessageReceiverWorker(messageCtx,callback);
+ messageCtx.getEnvelope().build();
+
+
+ /**
+ * If this type of Message Reciecer is used without addressing, the condtions given in Jira
+ * https://issues.apache.org/jira/browse/AXIS2-1363 would occuer(Both 202 accepted and 200 OK is written to the
+ * output stream). To avoid it if addressing is not present we do not spawn a new thread. This will disapper when
+ * async message recivers are removed later
+ */
+
+ if(messageCtx.getReplyTo() != null
+ && !AddressingConstants.Submission.WSA_ANONYMOUS_URL.equals(messageCtx.getReplyTo().getAddress())
+ && !AddressingConstants.Final.WSA_ANONYMOUS_URL.equals(messageCtx.getReplyTo().getAddress())){
+ messageCtx.getConfigurationContext().getThreadPool().execute(theadedTask);
+ }else{
+ theadedTask.run();
+ }
+ }
+ public class AsyncMessageReceiverWorker implements Runnable{
+ private MessageContext messageCtx;
+ private ServerCallback callback;
+
+ public AsyncMessageReceiverWorker(MessageContext messageCtx,ServerCallback callback){
+ this.messageCtx = messageCtx;
+ this.callback = callback;
+ }
+
+ public void run() {
+ try {
+ MessageContext newmsgCtx =
+ MessageContextBuilder.createOutMessageContext(messageCtx);
+ newmsgCtx.getOperationContext().addMessageContext(newmsgCtx);
+ ThreadContextDescriptor tc = setThreadContext(messageCtx);
+ try {
+ invokeBusinessLogic(messageCtx, newmsgCtx);
+ } finally {
+ restoreThreadContext(tc);
+ }
+ callback.handleResult(newmsgCtx);
+ } catch (AxisFault e) {
try {
- MessageContext newmsgCtx =
- MessageContextBuilder.createOutMessageContext(messageCtx);
- newmsgCtx.getOperationContext().addMessageContext(newmsgCtx);
- ThreadContextDescriptor tc = setThreadContext(messageCtx);
- try {
- invokeBusinessLogic(messageCtx, newmsgCtx);
- } finally {
- restoreThreadContext(tc);
- }
- callback.handleResult(newmsgCtx);
- } catch (AxisFault e) {
- try {
- callback.handleFault(e);
- } catch (AxisFault axisFault) {
- log.error(e);
- }
+ callback.handleFault(e);
+ } catch (AxisFault axisFault) {
log.error(e);
}
+ log.error(e);
}
- };
-
- messageCtx.getEnvelope().build();
- messageCtx.getConfigurationContext().getThreadPool().execute(theadedTask);
- }
+ }
+ };
+
}
---------------------------------------------------------------------
To unsubscribe, e-mail: axis-cvs-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-cvs-help@ws.apache.org