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 2005/06/29 14:16:40 UTC
svn commit: r202356 - in
/webservices/axis/trunk/java/modules/core/src/org/apache/axis: ./ context/
receivers/ transport/ transport/http/ transport/tcp/ util/
Author: hemapani
Date: Wed Jun 29 05:16:39 2005
New Revision: 202356
URL: http://svn.apache.org/viewcvs?rev=202356&view=rev
Log:
updates to http transports to handle MTOM
Modified:
webservices/axis/trunk/java/modules/core/src/org/apache/axis/Constants.java
webservices/axis/trunk/java/modules/core/src/org/apache/axis/context/MessageContext.java
webservices/axis/trunk/java/modules/core/src/org/apache/axis/receivers/AbstractInOutSyncMessageReceiver.java
webservices/axis/trunk/java/modules/core/src/org/apache/axis/transport/AbstractTransportSender.java
webservices/axis/trunk/java/modules/core/src/org/apache/axis/transport/http/AxisServlet.java
webservices/axis/trunk/java/modules/core/src/org/apache/axis/transport/http/HTTPTransportReceiver.java
webservices/axis/trunk/java/modules/core/src/org/apache/axis/transport/http/HTTPTransportSender.java
webservices/axis/trunk/java/modules/core/src/org/apache/axis/transport/http/HTTPTransportUtils.java
webservices/axis/trunk/java/modules/core/src/org/apache/axis/transport/http/SimpleHTTPOutputStream.java
webservices/axis/trunk/java/modules/core/src/org/apache/axis/transport/tcp/TCPServer.java
webservices/axis/trunk/java/modules/core/src/org/apache/axis/util/Utils.java
Modified: webservices/axis/trunk/java/modules/core/src/org/apache/axis/Constants.java
URL: http://svn.apache.org/viewcvs/webservices/axis/trunk/java/modules/core/src/org/apache/axis/Constants.java?rev=202356&r1=202355&r2=202356&view=diff
==============================================================================
--- webservices/axis/trunk/java/modules/core/src/org/apache/axis/Constants.java (original)
+++ webservices/axis/trunk/java/modules/core/src/org/apache/axis/Constants.java Wed Jun 29 05:16:39 2005
@@ -176,7 +176,7 @@
// globally enable MTOM
public static final String ENABLE_MTOM = "enableMTOM";
//set after checking the Envelope & ENABLE_MTOM
- public static final String DO_MTOM = "doMTOM";
+ //public static final String DO_MTOM = "doMTOM";
}
public static final String VALUE_TRUE = "true";
public static final String VALUE_FALSE = "false";
Modified: webservices/axis/trunk/java/modules/core/src/org/apache/axis/context/MessageContext.java
URL: http://svn.apache.org/viewcvs/webservices/axis/trunk/java/modules/core/src/org/apache/axis/context/MessageContext.java?rev=202356&r1=202355&r2=202356&view=diff
==============================================================================
--- webservices/axis/trunk/java/modules/core/src/org/apache/axis/context/MessageContext.java (original)
+++ webservices/axis/trunk/java/modules/core/src/org/apache/axis/context/MessageContext.java Wed Jun 29 05:16:39 2005
@@ -124,6 +124,8 @@
private String soapAction;
+ private boolean doMTOM = false;
+
/**
* Conveniance Method, but before call engine.send() or engine.receive() one must send transport in/out
* @param engineContext
@@ -565,6 +567,20 @@
*/
public void setSoapAction(String string) {
soapAction = string;
+ }
+
+ /**
+ * @return
+ */
+ public boolean isDoMTOM() {
+ return doMTOM;
+ }
+
+ /**
+ * @param b
+ */
+ public void setDoMTOM(boolean b) {
+ doMTOM = b;
}
}
Modified: webservices/axis/trunk/java/modules/core/src/org/apache/axis/receivers/AbstractInOutSyncMessageReceiver.java
URL: http://svn.apache.org/viewcvs/webservices/axis/trunk/java/modules/core/src/org/apache/axis/receivers/AbstractInOutSyncMessageReceiver.java?rev=202356&r1=202355&r2=202356&view=diff
==============================================================================
--- webservices/axis/trunk/java/modules/core/src/org/apache/axis/receivers/AbstractInOutSyncMessageReceiver.java (original)
+++ webservices/axis/trunk/java/modules/core/src/org/apache/axis/receivers/AbstractInOutSyncMessageReceiver.java Wed Jun 29 05:16:39 2005
@@ -57,7 +57,7 @@
newmsgCtx.setServiceContext(messgeCtx.getServiceContext());
newmsgCtx.setProperty(MessageContext.TRANSPORT_OUT,messgeCtx.getProperty(MessageContext.TRANSPORT_OUT));
newmsgCtx.setProperty(Constants.Configuration.DO_REST,messgeCtx.getProperty((Constants.Configuration.DO_REST)));
- newmsgCtx.setProperty(Constants.Configuration.DO_MTOM,messgeCtx.getProperty(Constants.Configuration.DO_MTOM));
+ newmsgCtx.setDoMTOM(messgeCtx.isDoMTOM());
invokeBusinessLogic(messgeCtx,newmsgCtx);
Modified: webservices/axis/trunk/java/modules/core/src/org/apache/axis/transport/AbstractTransportSender.java
URL: http://svn.apache.org/viewcvs/webservices/axis/trunk/java/modules/core/src/org/apache/axis/transport/AbstractTransportSender.java?rev=202356&r1=202355&r2=202356&view=diff
==============================================================================
--- webservices/axis/trunk/java/modules/core/src/org/apache/axis/transport/AbstractTransportSender.java (original)
+++ webservices/axis/trunk/java/modules/core/src/org/apache/axis/transport/AbstractTransportSender.java Wed Jun 29 05:16:39 2005
@@ -18,7 +18,6 @@
import java.io.OutputStream;
import javax.xml.namespace.QName;
-import javax.xml.stream.XMLOutputFactory;
import org.apache.axis.Constants;
import org.apache.axis.addressing.AddressingConstants;
@@ -136,14 +135,8 @@
if (outputMessage != null) {
OMOutput omOutput = null;
- boolean doMTOM = false;
- if (msgContext.getProperty(Constants.Configuration.DO_MTOM)!=null) {
- doMTOM = ((Boolean) msgContext
- .getProperty(Constants.Configuration.DO_MTOM))
- .booleanValue();
- }
- else
- {
+ boolean doMTOM = msgContext.isDoMTOM();
+ if (!doMTOM){
doMTOM = HTTPTransportUtils.doWriteMTOM(msgContext);
}
try {
@@ -151,6 +144,7 @@
omOutput = new OMOutput(out, true);
outputMessage.serialize(omOutput);
omOutput.flush();
+ omOutput.complete();
out.flush();
} else {
omOutput = new OMOutput(out, false);
Modified: webservices/axis/trunk/java/modules/core/src/org/apache/axis/transport/http/AxisServlet.java
URL: http://svn.apache.org/viewcvs/webservices/axis/trunk/java/modules/core/src/org/apache/axis/transport/http/AxisServlet.java?rev=202356&r1=202355&r2=202356&view=diff
==============================================================================
--- webservices/axis/trunk/java/modules/core/src/org/apache/axis/transport/http/AxisServlet.java (original)
+++ webservices/axis/trunk/java/modules/core/src/org/apache/axis/transport/http/AxisServlet.java Wed Jun 29 05:16:39 2005
@@ -29,16 +29,12 @@
import javax.xml.stream.FactoryConfigurationError;
import org.apache.axis.Constants;
-import org.apache.axis.addressing.AddressingConstants;
-import org.apache.axis.addressing.EndpointReference;
import org.apache.axis.context.ConfigurationContext;
import org.apache.axis.context.ConfigurationContextFactory;
import org.apache.axis.context.MessageContext;
import org.apache.axis.context.SessionContext;
-import org.apache.axis.engine.AxisEngine;
import org.apache.axis.engine.AxisFault;
import org.apache.axis.om.OMException;
-import org.apache.axis.util.Utils;
/**
* Class AxisServlet
@@ -187,38 +183,6 @@
}
}
- public void processSOAPMessage(
- MessageContext msgContext,
- HttpServletRequest req,
- HttpServletResponse res)
- throws AxisFault {
- try {
- res.setContentType("text/xml; charset=utf-8");
- AxisEngine engine = new AxisEngine(configContext);
- msgContext.setServerSide(true);
-
- String filePart = req.getRequestURL().toString();
- msgContext.setTo(new EndpointReference(AddressingConstants.WSA_TO, filePart));
- String soapActionString = req.getHeader(HTTPConstants.HEADER_SOAP_ACTION);
- if (soapActionString != null) {
- msgContext.setWSAAction(soapActionString);
- msgContext.setSoapAction(soapActionString);
- }
- Utils.configureMessageContextForHTTP(
- req.getContentType(),
- soapActionString,
- msgContext);
- msgContext.setProperty(MessageContext.TRANSPORT_OUT, res.getOutputStream());
- engine.receive(msgContext);
-
- Object contextWritten = msgContext.getOperationContext().getProperty(Constants.RESPONSE_WRITTEN);
- if (contextWritten == null || !Constants.VALUE_TRUE.equals(contextWritten)) {
- res.setStatus(HttpServletResponse.SC_ACCEPTED);
- }
- } catch (IOException e) {
- throw new AxisFault(e);
- }
-
- }
+
}
Modified: webservices/axis/trunk/java/modules/core/src/org/apache/axis/transport/http/HTTPTransportReceiver.java
URL: http://svn.apache.org/viewcvs/webservices/axis/trunk/java/modules/core/src/org/apache/axis/transport/http/HTTPTransportReceiver.java?rev=202356&r1=202355&r2=202356&view=diff
==============================================================================
--- webservices/axis/trunk/java/modules/core/src/org/apache/axis/transport/http/HTTPTransportReceiver.java (original)
+++ webservices/axis/trunk/java/modules/core/src/org/apache/axis/transport/http/HTTPTransportReceiver.java Wed Jun 29 05:16:39 2005
@@ -17,7 +17,6 @@
import java.io.IOException;
import java.io.InputStream;
-import java.io.OutputStream;
import java.util.Collection;
import java.util.Enumeration;
import java.util.HashMap;
@@ -25,17 +24,10 @@
import java.util.Iterator;
import java.util.Map;
-import org.apache.axis.Constants;
-import org.apache.axis.addressing.AddressingConstants;
-import org.apache.axis.addressing.EndpointReference;
import org.apache.axis.context.ConfigurationContext;
-import org.apache.axis.context.MessageContext;
import org.apache.axis.description.OperationDescription;
import org.apache.axis.description.ServiceDescription;
import org.apache.axis.engine.AxisFault;
-import org.apache.axis.soap.SOAPEnvelope;
-import org.apache.axis.transport.TransportUtils;
-import org.apache.axis.util.Utils;
/**
* Class HTTPTransportReceiver
@@ -469,14 +461,15 @@
if (services != null && !services.isEmpty()) {
status = true;
- Collection serviceCollection = services.values();
+ Collection serviceCollection = services.values();
+ temp += "<h2>" + "Deployed services" + "</h2>";
for (Iterator it = serviceCollection.iterator(); it.hasNext();) {
Map operations;
Collection operationsList;
ServiceDescription axisService = (ServiceDescription) it.next();
operations = axisService.getOperations();
operationsList = operations.values();
- temp += "<h2>" + "Deployed services" + "</h2>";
+
temp += "<h3>" + axisService.getName().getLocalPart() + "</h3>";
if (operationsList.size() > 0) {
temp += "Available operations <ul>";
Modified: webservices/axis/trunk/java/modules/core/src/org/apache/axis/transport/http/HTTPTransportSender.java
URL: http://svn.apache.org/viewcvs/webservices/axis/trunk/java/modules/core/src/org/apache/axis/transport/http/HTTPTransportSender.java?rev=202356&r1=202355&r2=202356&view=diff
==============================================================================
--- webservices/axis/trunk/java/modules/core/src/org/apache/axis/transport/http/HTTPTransportSender.java (original)
+++ webservices/axis/trunk/java/modules/core/src/org/apache/axis/transport/http/HTTPTransportSender.java Wed Jun 29 05:16:39 2005
@@ -26,9 +26,6 @@
import java.net.URL;
import java.util.Map;
-import javax.servlet.http.HttpUtils;
-
-import org.apache.axis.Constants;
import org.apache.axis.addressing.EndpointReference;
import org.apache.axis.context.ConfigurationContext;
import org.apache.axis.context.MessageContext;
@@ -78,7 +75,8 @@
.append(": ")
.append(HTTPConstants.HEADER_TRANSFER_ENCODING_CHUNKED)
.append("\n");
- } else {
+ }
+ if(!chuncked && !msgContext.isDoMTOM()) {
buf.append(HTTPConstants.HEADER_CONTENT_LENGTH).append(": " + contentLength + "\n");
}
if (!this.doREST) {
@@ -135,9 +133,11 @@
(TransportSenderInfo) msgContext.getProperty(
TRANSPORT_SENDER_INFO);
InputStream in = null;
- if (chuncked) {
- ((ChunkedOutputStream) out).eos();
- } else {
+ if(chuncked || msgContext.isDoMTOM()){
+ if (chuncked) {
+ ((ChunkedOutputStream) out).eos();
+ }
+ }else{
openSocket(msgContext);
OutputStream outS = transportInfo.out;
in = transportInfo.in;
@@ -184,7 +184,8 @@
MessageContext msgctx)
throws AxisFault {
msgctx.setProperty(TRANSPORT_SENDER_INFO, new TransportSenderInfo());
- if (chuncked) {
+
+ if(msgctx.isDoMTOM() || chuncked){
return openSocket(msgctx);
} else {
TransportSenderInfo transportInfo =
@@ -218,15 +219,18 @@
OutputStream out)
throws AxisFault {
try {
-
- if (chuncked) {
+ if(msgContext.isDoMTOM() || chuncked){
TransportSenderInfo transportInfo =
(TransportSenderInfo) msgContext.getProperty(
TRANSPORT_SENDER_INFO);
writeTransportHeaders(out, transportInfo.url, msgContext, -1);
out.flush();
- return new ChunkedOutputStream(out);
- } else {
+ if (chuncked) {
+ return new ChunkedOutputStream(out);
+ } else {
+ return out;
+ }
+ }else {
return out;
}
} catch (IOException e) {
Modified: webservices/axis/trunk/java/modules/core/src/org/apache/axis/transport/http/HTTPTransportUtils.java
URL: http://svn.apache.org/viewcvs/webservices/axis/trunk/java/modules/core/src/org/apache/axis/transport/http/HTTPTransportUtils.java?rev=202356&r1=202355&r2=202356&view=diff
==============================================================================
--- webservices/axis/trunk/java/modules/core/src/org/apache/axis/transport/http/HTTPTransportUtils.java (original)
+++ webservices/axis/trunk/java/modules/core/src/org/apache/axis/transport/http/HTTPTransportUtils.java Wed Jun 29 05:16:39 2005
@@ -234,8 +234,7 @@
boolean envelopeContainsOptimise = HTTPTransportUtils
.checkEnvelopeForOptimise(msgContext.getEnvelope());
boolean doMTOM = enableMTOM && envelopeContainsOptimise;
- msgContext.setProperty(Constants.Configuration.DO_MTOM, new Boolean(
- doMTOM));
+ msgContext.setDoMTOM(doMTOM);
return doMTOM;
}
}
Modified: webservices/axis/trunk/java/modules/core/src/org/apache/axis/transport/http/SimpleHTTPOutputStream.java
URL: http://svn.apache.org/viewcvs/webservices/axis/trunk/java/modules/core/src/org/apache/axis/transport/http/SimpleHTTPOutputStream.java?rev=202356&r1=202355&r2=202356&view=diff
==============================================================================
--- webservices/axis/trunk/java/modules/core/src/org/apache/axis/transport/http/SimpleHTTPOutputStream.java (original)
+++ webservices/axis/trunk/java/modules/core/src/org/apache/axis/transport/http/SimpleHTTPOutputStream.java Wed Jun 29 05:16:39 2005
@@ -95,7 +95,11 @@
out.flush();
}
if(chuncked){
- ((ChunkedOutputStream)out).eos();
+ //TODO sometimes the out stream is closed by the client
+ try {
+ ((ChunkedOutputStream)out).eos();
+ } catch (IOException e) {
+ }
}
}
Modified: webservices/axis/trunk/java/modules/core/src/org/apache/axis/transport/tcp/TCPServer.java
URL: http://svn.apache.org/viewcvs/webservices/axis/trunk/java/modules/core/src/org/apache/axis/transport/tcp/TCPServer.java?rev=202356&r1=202355&r2=202356&view=diff
==============================================================================
--- webservices/axis/trunk/java/modules/core/src/org/apache/axis/transport/tcp/TCPServer.java (original)
+++ webservices/axis/trunk/java/modules/core/src/org/apache/axis/transport/tcp/TCPServer.java Wed Jun 29 05:16:39 2005
@@ -91,7 +91,10 @@
}
- public synchronized void start() {
+ public synchronized void start() throws AxisFault {
+ if(serversocket == null){
+ serversocket = ListenerManager.openSocket(port);
+ }
started = true;
Thread thread = new Thread(this);
thread.start();
@@ -124,7 +127,6 @@
Parameter param = transprtIn.getParameter(PARAM_PORT);
if (param != null) {
int port = Integer.parseInt((String) param.getValue());
- serversocket = ListenerManager.openSocket(port);
}
}
Modified: webservices/axis/trunk/java/modules/core/src/org/apache/axis/util/Utils.java
URL: http://svn.apache.org/viewcvs/webservices/axis/trunk/java/modules/core/src/org/apache/axis/util/Utils.java?rev=202356&r1=202355&r2=202356&view=diff
==============================================================================
--- webservices/axis/trunk/java/modules/core/src/org/apache/axis/util/Utils.java (original)
+++ webservices/axis/trunk/java/modules/core/src/org/apache/axis/util/Utils.java Wed Jun 29 05:16:39 2005
@@ -137,31 +137,7 @@
}
}
- public static void configureMessageContextForHTTP(
- String contextType,
- String soapAction,
- MessageContext msgCtx)
- throws AxisFault {
- if (Constants.SOAP.MTOM_CONTENT_TYPE.equals(contextType)) {
- if (Constants
- .VALUE_TRUE
- .equals(msgCtx.getProperty(Constants.Configuration.ENABLE_MTOM))) {
- msgCtx.setProperty(Constants.Configuration.DO_MTOM, Constants.VALUE_TRUE);
- } else {
- throw new AxisFault("MTOTM Not supported");
- }
- } else if (Constants.SOAP.SOAP_12_CONTENT_TYPE.equals(contextType)) {
- //TODO what to do with 1.2 for REST
- } else if (
- contextType != null && contextType.indexOf(Constants.SOAP.SOAP_11_CONTENT_TYPE) > -1) {
- if ((soapAction == null || soapAction.length() == 0)
- && Constants.VALUE_TRUE.equals(
- msgCtx.getProperty(Constants.Configuration.ENABLE_REST))) {
- msgCtx.setProperty(Constants.Configuration.DO_REST, Constants.VALUE_TRUE);
- }
- }
-
- }
+
public static String[] parseRequestURLForServiceAndOperation(String filePart) {
String[] values = new String[2];