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];