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 di...@apache.org on 2008/03/12 16:38:08 UTC
svn commit: r636372 - in
/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/local:
LocalResponder.java LocalResponseTransportOutDescription.java
LocalTransportReceiver.java LocalTransportSender.java
Author: dims
Date: Wed Mar 12 08:38:05 2008
New Revision: 636372
URL: http://svn.apache.org/viewvc?rev=636372&view=rev
Log:
Fix for AXIS2-3584 - LocalTransportSender can be used on multithread.
Added:
webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/local/LocalResponseTransportOutDescription.java
Modified:
webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/local/LocalResponder.java
webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/local/LocalTransportReceiver.java
webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/local/LocalTransportSender.java
Modified: webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/local/LocalResponder.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/local/LocalResponder.java?rev=636372&r1=636371&r2=636372&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/local/LocalResponder.java (original)
+++ webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/local/LocalResponder.java Wed Mar 12 08:38:05 2008
@@ -42,10 +42,12 @@
public class LocalResponder extends AbstractHandler implements TransportSender {
protected static final Log log = LogFactory.getLog(LocalResponder.class);
- LocalTransportSender sender;
+
+ // fixed for Executing LocalTransport in MulthThread.
+ private OutputStream out;
- public LocalResponder(LocalTransportSender sender) {
- this.sender = sender;
+ public LocalResponder(OutputStream response) {
+ this.out = response;
}
public void init(ConfigurationContext confContext, TransportOutDescription transportOut)
@@ -71,7 +73,6 @@
msgContext.setDoingMTOM(HTTPTransportUtils.doWriteMTOM(msgContext));
msgContext.setDoingSwA(HTTPTransportUtils.doWriteSwA(msgContext));
- OutputStream out;
EndpointReference epr = null;
if (msgContext.getTo() != null && !msgContext.getTo().hasAnonymousAddress()) {
@@ -87,7 +88,6 @@
if (epr != null) {
if (!epr.hasNoneAddress()) {
- out = sender.getResponse();
TransportUtils.writeMessage(msgContext, out);
}
} else {
Added: webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/local/LocalResponseTransportOutDescription.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/local/LocalResponseTransportOutDescription.java?rev=636372&view=auto
==============================================================================
--- webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/local/LocalResponseTransportOutDescription.java (added)
+++ webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/local/LocalResponseTransportOutDescription.java Wed Mar 12 08:38:05 2008
@@ -0,0 +1,147 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.axis2.transport.local;
+
+import org.apache.axiom.om.OMElement;
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.description.Flow;
+import org.apache.axis2.description.Parameter;
+import org.apache.axis2.description.TransportOutDescription;
+import org.apache.axis2.engine.Phase;
+import org.apache.axis2.transport.TransportSender;
+import java.util.ArrayList;
+
+/**
+ * This is wrapper class of TransportOutDescription class.
+ * In Using Axis2 Local Transport, you can't send SOAP Message successively.
+ */
+
+class LocalResponseTransportOutDescription extends TransportOutDescription {
+
+ private TransportSender sender = null;
+
+ private TransportOutDescription tOut = null;
+
+ public LocalResponseTransportOutDescription(
+ TransportOutDescription localTransportSenderDescription)
+ throws AxisFault {
+
+ super(localTransportSenderDescription.getName());
+
+ this.tOut = localTransportSenderDescription;
+ }
+
+ /**
+ * Method addParameter.
+ *
+ * @param param
+ */
+ public void addParameter(Parameter param) throws AxisFault {
+ tOut.addParameter(param);
+ }
+
+ public void removeParameter(Parameter param) throws AxisFault {
+ tOut.removeParameter(param);
+ }
+
+ public void deserializeParameters(OMElement parameterElement)
+ throws AxisFault {
+ tOut.deserializeParameters(parameterElement);
+ }
+
+ public Flow getFaultFlow() {
+ return tOut.getFaultFlow();
+ }
+
+ public Phase getFaultPhase() {
+ return tOut.getFaultPhase();
+ }
+
+ /**
+ * @return Returns String.
+ */
+ public String getName() {
+ return tOut.getName();
+ }
+
+ public Flow getOutFlow() {
+ return tOut.getOutFlow();
+ }
+
+ public Phase getOutPhase() {
+ return tOut.getOutPhase();
+ }
+
+ /**
+ * Method getParameter.
+ *
+ * @param name
+ * @return Returns Parameter.
+ */
+ public Parameter getParameter(String name) {
+ return tOut.getParameter(name);
+ }
+
+ public ArrayList getParameters() {
+ return tOut.getParameters();
+ }
+
+ /**
+ * @return Returns TransportSender.
+ */
+ public TransportSender getSender() {
+ return this.sender;
+ }
+
+ // to check whether the parameter is locked at any level
+ public boolean isParameterLocked(String parameterName) {
+ return tOut.isParameterLocked(parameterName);
+ }
+
+ public void setFaultFlow(Flow faultFlow) {
+ tOut.setFaultFlow(faultFlow);
+ }
+
+ public void setFaultPhase(Phase faultPhase) {
+ tOut.setFaultPhase(faultPhase);
+ }
+
+ /**
+ * @param name
+ */
+ public void setName(String name) {
+ tOut.setName(name);
+ }
+
+ public void setOutFlow(Flow outFlow) {
+ tOut.setOutFlow(outFlow);
+ }
+
+ public void setOutPhase(Phase outPhase) {
+ tOut.setOutPhase(outPhase);
+ }
+
+ /**
+ * @param sender
+ */
+ public void setSender(TransportSender sender) {
+ this.sender = sender;
+ }
+}
Modified: webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/local/LocalTransportReceiver.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/local/LocalTransportReceiver.java?rev=636372&r1=636371&r2=636372&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/local/LocalTransportReceiver.java (original)
+++ webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/local/LocalTransportReceiver.java Wed Mar 12 08:38:05 2008
@@ -38,11 +38,11 @@
import javax.xml.stream.XMLStreamException;
import java.io.InputStream;
import java.io.InputStreamReader;
+import java.io.OutputStream;
public class LocalTransportReceiver {
public static ConfigurationContext CONFIG_CONTEXT;
private ConfigurationContext confContext;
- private LocalTransportSender sender;
public LocalTransportReceiver(ConfigurationContext configContext) {
confContext = configContext;
@@ -50,23 +50,26 @@
public LocalTransportReceiver(LocalTransportSender sender) {
this(CONFIG_CONTEXT);
- this.sender = sender;
}
- public void processMessage(InputStream in, EndpointReference to, String action)
+ public void processMessage(InputStream in, EndpointReference to, String action, OutputStream response)
throws AxisFault {
MessageContext msgCtx = confContext.createMessageContext();
TransportInDescription tIn = confContext.getAxisConfiguration().getTransportIn(
Constants.TRANSPORT_LOCAL);
TransportOutDescription tOut = confContext.getAxisConfiguration().getTransportOut(
Constants.TRANSPORT_LOCAL);
+
+ // CAUTION : When using Local Transport of Axis2, class LocalTransportReceiver changed the name of LocalTransportSender's class in configContext.
+ // We escaped this problem by the following code.
+ LocalResponseTransportOutDescription localTransportResOut = new LocalResponseTransportOutDescription(
+ tOut);
+ localTransportResOut.setSender(new LocalResponder(response));
+
try {
-
- tOut.setSender(new LocalResponder(sender));
-
msgCtx.setTransportIn(tIn);
- msgCtx.setTransportOut(tOut);
- msgCtx.setProperty(MessageContext.TRANSPORT_OUT, sender.getResponse());
+ msgCtx.setTransportOut(localTransportResOut);
+ msgCtx.setProperty(MessageContext.TRANSPORT_OUT, response);
msgCtx.setTo(to);
msgCtx.setWSAAction(action);
@@ -89,9 +92,8 @@
try {
MessageContext faultContext =
MessageContextBuilder.createFaultMessageContext(msgCtx, e);
-
- faultContext.setTransportOut(tOut);
- faultContext.setProperty(MessageContext.TRANSPORT_OUT, sender.getResponse());
+ faultContext.setTransportOut(localTransportResOut);
+ faultContext.setProperty(MessageContext.TRANSPORT_OUT, response);
AxisEngine.sendFault(faultContext);
} catch (AxisFault axisFault) {
Modified: webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/local/LocalTransportSender.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/local/LocalTransportSender.java?rev=636372&r1=636371&r2=636372&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/local/LocalTransportSender.java (original)
+++ webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/local/LocalTransportSender.java Wed Mar 12 08:38:05 2008
@@ -42,8 +42,6 @@
public class LocalTransportSender extends AbstractHandler implements TransportSender {
protected static final Log log = LogFactory.getLog(LocalTransportSender.class);
- private ByteArrayOutputStream response;
-
public void init(ConfigurationContext confContext, TransportOutDescription transportOut)
throws AxisFault {
}
@@ -54,10 +52,6 @@
public void cleanup(MessageContext msgContext) throws AxisFault {
}
- protected OutputStream getResponse() {
- return response;
- }
-
/**
* Method invoke
*
@@ -106,10 +100,10 @@
throws AxisFault {
try {
InputStream in = new ByteArrayInputStream(out.toByteArray());
- response = new ByteArrayOutputStream();
+ ByteArrayOutputStream response = new ByteArrayOutputStream();
LocalTransportReceiver localTransportReceiver = new LocalTransportReceiver(this);
- localTransportReceiver.processMessage(in, msgContext.getTo(), msgContext.getOptions().getAction());
+ localTransportReceiver.processMessage(in, msgContext.getTo(), msgContext.getOptions().getAction(), response);
in.close();
out.close();
in = new ByteArrayInputStream(response.toByteArray());
---------------------------------------------------------------------
To unsubscribe, e-mail: axis-cvs-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-cvs-help@ws.apache.org