You are viewing a plain text version of this content. The canonical link for it is here.
Posted to axis-cvs@ws.apache.org by he...@apache.org on 2005/05/19 14:14:23 UTC

svn commit: r170918 - in /webservices/axis/trunk/java/modules/core/src/org/apache/axis: Constants.java clientapi/InOnlyMEPClient.java clientapi/InOutMEPClient.java clientapi/ListenerManager.java transport/TransportReceiver.java transport/http/HTTPTransportReceiver.java transport/http/SimpleHTTPServer.java transport/tcp/TCPServer.java

Author: hemapani
Date: Thu May 19 05:14:22 2005
New Revision: 170918

URL: http://svn.apache.org/viewcvs?rev=170918&view=rev
Log:
make the lister work on differant rransports

Modified:
    webservices/axis/trunk/java/modules/core/src/org/apache/axis/Constants.java
    webservices/axis/trunk/java/modules/core/src/org/apache/axis/clientapi/InOnlyMEPClient.java
    webservices/axis/trunk/java/modules/core/src/org/apache/axis/clientapi/InOutMEPClient.java
    webservices/axis/trunk/java/modules/core/src/org/apache/axis/clientapi/ListenerManager.java
    webservices/axis/trunk/java/modules/core/src/org/apache/axis/transport/TransportReceiver.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/SimpleHTTPServer.java
    webservices/axis/trunk/java/modules/core/src/org/apache/axis/transport/tcp/TCPServer.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=170918&r1=170917&r2=170918&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 Thu May 19 05:14:22 2005
@@ -83,6 +83,8 @@
      * Field TRANSPORT_SMTP
      */
     public static final String TRANSPORT_MAIL = "mail";
+    
+    public static final String TRANSPORT_JMS = "jms";
 
     /**
      * Field LISTSERVICES

Modified: webservices/axis/trunk/java/modules/core/src/org/apache/axis/clientapi/InOnlyMEPClient.java
URL: http://svn.apache.org/viewcvs/webservices/axis/trunk/java/modules/core/src/org/apache/axis/clientapi/InOnlyMEPClient.java?rev=170918&r1=170917&r2=170918&view=diff
==============================================================================
--- webservices/axis/trunk/java/modules/core/src/org/apache/axis/clientapi/InOnlyMEPClient.java (original)
+++ webservices/axis/trunk/java/modules/core/src/org/apache/axis/clientapi/InOnlyMEPClient.java Thu May 19 05:14:22 2005
@@ -31,7 +31,6 @@
 import org.apache.axis.engine.AxisEngine;
 import org.apache.axis.engine.AxisFault;
 import org.apache.axis.soap.SOAPEnvelope;
-import org.apache.axis.transport.TransportReceiver;
 import org.apache.axis.transport.http.HTTPTransportReceiver;
 import org.apache.wsdl.WSDLConstants;
 
@@ -80,7 +79,7 @@
         response.setServiceContext(msgctx.getServiceContext());
 
         //TODO Fix this we support only the HTTP Sync cases, so we hardcode this
-        TransportReceiver receiver = new HTTPTransportReceiver();
+        HTTPTransportReceiver receiver = new HTTPTransportReceiver();
         receiver.invoke(response, sysContext);
         SOAPEnvelope resenvelope = response.getEnvelope();
         if (response!= null && resenvelope.getBody().hasFault()) {

Modified: webservices/axis/trunk/java/modules/core/src/org/apache/axis/clientapi/InOutMEPClient.java
URL: http://svn.apache.org/viewcvs/webservices/axis/trunk/java/modules/core/src/org/apache/axis/clientapi/InOutMEPClient.java?rev=170918&r1=170917&r2=170918&view=diff
==============================================================================
--- webservices/axis/trunk/java/modules/core/src/org/apache/axis/clientapi/InOutMEPClient.java (original)
+++ webservices/axis/trunk/java/modules/core/src/org/apache/axis/clientapi/InOutMEPClient.java Thu May 19 05:14:22 2005
@@ -35,7 +35,6 @@
 import org.apache.axis.engine.AxisFault;
 import org.apache.axis.om.OMException;
 import org.apache.axis.soap.SOAPEnvelope;
-import org.apache.axis.transport.TransportReceiver;
 import org.apache.axis.transport.http.HTTPTransportReceiver;
 import org.apache.wsdl.WSDLConstants;
 
@@ -105,10 +104,6 @@
         super(serviceContext, WSDLConstants.MEP_URI_OUT_IN);
         //service context has the engine context set in to it ! 
         callbackReceiver = new CallbackReceiver();
-        listenerManager = new ListenerManager(serviceContext.getEngineContext());
-        listenerManager.getSystemContext().registerServiceContext(
-            serviceContext.getServiceInstanceID(),
-            serviceContext);
     }
 
 //    this method is commented out, till we implemented it     
@@ -165,7 +160,7 @@
             response.setServiceContext(msgctx.getServiceContext());
 
             //TODO Fix this we support only the HTTP Sync cases, so we hardcode this
-            TransportReceiver receiver = new HTTPTransportReceiver();
+            HTTPTransportReceiver receiver = new HTTPTransportReceiver();
             receiver.invoke(response, sysContext);
             SOAPEnvelope resenvelope = response.getEnvelope();
             if (resenvelope.getBody().hasFault()) {
@@ -212,7 +207,7 @@
                     listenerManager.replyToEPR(
                         serviceContext.getServiceConfig().getName().getLocalPart()
                             + "/"
-                            + axisop.getName().getLocalPart()));
+                            + axisop.getName().getLocalPart(),listenerTransport));
 
             }
 
@@ -236,7 +231,7 @@
                             response.setOperationContext(msgctx.getOperationContext());
                             response.setServiceContext(msgctx.getServiceContext());
 
-                            TransportReceiver receiver = new HTTPTransportReceiver();
+                            HTTPTransportReceiver receiver = new HTTPTransportReceiver();
                             receiver.invoke(response, syscontext);
                             SOAPEnvelope resenvelope = response.getEnvelope();
                             AsyncResult asyncResult = new AsyncResult();
@@ -298,7 +293,7 @@
         }
 
         if (useSeparateListener == true) {
-            listenerManager.makeSureStarted();
+            ListenerManager.makeSureStarted(listenerTransport,serviceContext.getEngineContext());
         }
     }
 

Modified: webservices/axis/trunk/java/modules/core/src/org/apache/axis/clientapi/ListenerManager.java
URL: http://svn.apache.org/viewcvs/webservices/axis/trunk/java/modules/core/src/org/apache/axis/clientapi/ListenerManager.java?rev=170918&r1=170917&r2=170918&view=diff
==============================================================================
--- webservices/axis/trunk/java/modules/core/src/org/apache/axis/clientapi/ListenerManager.java (original)
+++ webservices/axis/trunk/java/modules/core/src/org/apache/axis/clientapi/ListenerManager.java Thu May 19 05:14:22 2005
@@ -17,67 +17,60 @@
  */
 package org.apache.axis.clientapi;
 
+import java.io.IOException;
 import java.net.ServerSocket;
 
-import org.apache.axis.addressing.AddressingConstants;
+import org.apache.axis.Constants;
 import org.apache.axis.addressing.EndpointReference;
 import org.apache.axis.context.ConfigurationContext;
 import org.apache.axis.engine.AxisFault;
+import org.apache.axis.transport.TransportReceiver;
 import org.apache.axis.transport.http.SimpleHTTPServer;
+import org.apache.axis.transport.tcp.TCPServer;
 
 public class ListenerManager {
-    private ConfigurationContext systemContext;
-    private boolean started = false;
-    private int numberOfserver = 0;
-    private SimpleHTTPServer simpleHttpServer;
-    private ServerSocket scoket;
 
-    public ListenerManager(ConfigurationContext engineContext) {
-        this.systemContext = engineContext;
-    }
-
-    public void makeSureStarted() throws AxisFault {
-        synchronized (ListenerManager.class) {
-            try {
-                if (started == false) {
-
-                    scoket = new ServerSocket(6060);
-                    simpleHttpServer = new SimpleHTTPServer(systemContext, scoket);
-                    simpleHttpServer.start();
-                    started = true;
-                    numberOfserver++;
-                }
-            } catch (Exception e) {
-                throw new AxisFault(e.getMessage(), e);
+    public static TransportReceiver httpListener;
+    public static TransportReceiver tcpListener;
+    public static TransportReceiver mailListener;
+    public static TransportReceiver jmsListener;
+    public static ConfigurationContext configurationContext;
+
+    public static final void makeSureStarted(
+        String transport,
+        ConfigurationContext configurationContext)
+        throws AxisFault {
+        try {
+            ListenerManager.configurationContext = configurationContext;
+            if (Constants.TRANSPORT_HTTP.equals(transport) && httpListener == null) {
+                httpListener = new SimpleHTTPServer(configurationContext, new ServerSocket(6060));
+            } else if (Constants.TRANSPORT_JMS.equals(transport) && jmsListener == null) {
+                throw new UnsupportedOperationException();
+            } else if (Constants.TRANSPORT_MAIL.equals(transport) && mailListener == null) {
+                throw new UnsupportedOperationException();
+            } else if (Constants.TRANSPORT_TCP.equals(transport) && tcpListener == null) {
+                tcpListener = new TCPServer(7070, configurationContext);
             }
-
+        } catch (IOException e) {
+            throw new AxisFault(e);
         }
-
-    }
-    /**
-     * @return
-     */
-    public ConfigurationContext getSystemContext() {
-        return systemContext;
     }
 
-    public void stopAServer() {
-        numberOfserver--;
-        if (numberOfserver == 0) {
-            simpleHttpServer.stop();
+    public EndpointReference replyToEPR(String serviceName, String transport) throws AxisFault {
+        ListenerManager.configurationContext = configurationContext;
+        if (Constants.TRANSPORT_HTTP.equals(transport) && httpListener == null) {
+            return httpListener.replyToEPR(serviceName);
+        } else if (Constants.TRANSPORT_JMS.equals(transport) && jmsListener == null) {
+            return jmsListener.replyToEPR(serviceName);
+        } else if (Constants.TRANSPORT_MAIL.equals(transport) && mailListener == null) {
+            return mailListener.replyToEPR(serviceName);
+        } else if (Constants.TRANSPORT_TCP.equals(transport) && tcpListener == null) {
+            return tcpListener.replyToEPR(serviceName);
         }
-    }
+        throw new AxisFault(
+            "Calling method before starting the with makeSureStarted(..) Listener transport =  "
+                + transport);
 
-    public EndpointReference replyToEPR(String serviceName) {
-        return new EndpointReference(
-            AddressingConstants.WSA_REPLY_TO,
-            "http://127.0.0.1:" + (scoket.getLocalPort() + 1) + "/axis/services/" + serviceName);
-    }
-    /**
-     * @param context
-     */
-    public void setSystemContext(ConfigurationContext context) {
-        systemContext = context;
     }
 
 }

Modified: webservices/axis/trunk/java/modules/core/src/org/apache/axis/transport/TransportReceiver.java
URL: http://svn.apache.org/viewcvs/webservices/axis/trunk/java/modules/core/src/org/apache/axis/transport/TransportReceiver.java?rev=170918&r1=170917&r2=170918&view=diff
==============================================================================
--- webservices/axis/trunk/java/modules/core/src/org/apache/axis/transport/TransportReceiver.java (original)
+++ webservices/axis/trunk/java/modules/core/src/org/apache/axis/transport/TransportReceiver.java Thu May 19 05:14:22 2005
@@ -16,13 +16,14 @@
 package org.apache.axis.transport;
 
 
-import org.apache.axis.context.ConfigurationContext;
-import org.apache.axis.context.MessageContext;
+import org.apache.axis.addressing.EndpointReference;
 import org.apache.axis.engine.AxisFault;
 
 /**
  * Class TransportReceiver
  */
 public abstract class TransportReceiver{
-    public abstract void invoke(MessageContext msgContext,ConfigurationContext engineContext) throws AxisFault;
+    public abstract void start()throws AxisFault;
+    public abstract void stop()throws AxisFault;
+    public abstract EndpointReference replyToEPR(String serviceName)throws AxisFault ;
 }

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=170918&r1=170917&r2=170918&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 Thu May 19 05:14:22 2005
@@ -36,7 +36,7 @@
 /**
  * Class HTTPTransportReceiver
  */
-public class HTTPTransportReceiver extends TransportReceiver {
+public class HTTPTransportReceiver  {
     /**
      * Field END
      */

Modified: webservices/axis/trunk/java/modules/core/src/org/apache/axis/transport/http/SimpleHTTPServer.java
URL: http://svn.apache.org/viewcvs/webservices/axis/trunk/java/modules/core/src/org/apache/axis/transport/http/SimpleHTTPServer.java?rev=170918&r1=170917&r2=170918&view=diff
==============================================================================
--- webservices/axis/trunk/java/modules/core/src/org/apache/axis/transport/http/SimpleHTTPServer.java (original)
+++ webservices/axis/trunk/java/modules/core/src/org/apache/axis/transport/http/SimpleHTTPServer.java Thu May 19 05:14:22 2005
@@ -17,11 +17,13 @@
 
 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.EngineContextFactory;
 import org.apache.axis.context.MessageContext;
 import org.apache.axis.description.TransportOutDescription;
 import org.apache.axis.engine.AxisFault;
+import org.apache.axis.transport.TransportReceiver;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 
@@ -39,7 +41,7 @@
  * not use multiple instances of this class in the same JVM/classloader unless
  * you want bad things to happen at shutdown.
  */
-public class SimpleHTTPServer implements Runnable {
+public class SimpleHTTPServer extends TransportReceiver implements Runnable{
     /**
      * Field log
      */
@@ -196,7 +198,7 @@
      *
      * @throws Exception
      */
-    public void start() throws Exception {
+    public void start() throws AxisFault {
         Thread newThread = new Thread(this);
         newThread.start();
     }
@@ -274,4 +276,13 @@
             reciver.stop();
         }
     }
+    /* (non-Javadoc)
+     * @see org.apache.axis.transport.TransportReceiver#replyToEPR(java.lang.String)
+     */
+    public EndpointReference replyToEPR(String serviceName) {
+        return new EndpointReference(
+            AddressingConstants.WSA_REPLY_TO,
+            "http://127.0.0.1:" + (serverSocket.getLocalPort() + 1) + "/axis/services/" + serviceName);
+    }
+
 }

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=170918&r1=170917&r2=170918&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 Thu May 19 05:14:22 2005
@@ -28,6 +28,8 @@
 import javax.xml.stream.XMLStreamReader;
 
 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.EngineContextFactory;
 import org.apache.axis.context.MessageContext;
@@ -38,6 +40,7 @@
 import org.apache.axis.om.impl.llom.builder.StAXBuilder;
 import org.apache.axis.soap.SOAPEnvelope;
 import org.apache.axis.soap.impl.llom.builder.StAXSOAPModelBuilder;
+import org.apache.axis.transport.TransportReceiver;
 import org.apache.axis.transport.http.SimpleHTTPServer;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
@@ -45,7 +48,7 @@
 /**
  * Class HTTPTransportReceiver
  */
-public class TCPServer implements Runnable {
+public class TCPServer extends TransportReceiver implements Runnable {
     private int port = 8000;
     private ServerSocket serversocket;
     private boolean started = false;
@@ -77,8 +80,9 @@
 
     public void run() {
         while (started) {
+            Socket socket = null;
             try {
-                Socket socket = null;
+                
                 try {
                     socket = serversocket.accept();
                 } catch (java.io.InterruptedIOException iie) {
@@ -91,7 +95,7 @@
                 Reader in = new InputStreamReader(socket.getInputStream());
                 TransportOutDescription transportOut =
                     configContext.getEngineConfig().getTransportOut(
-                        new QName(Constants.TRANSPORT_HTTP));
+                        new QName(Constants.TRANSPORT_TCP));
                 MessageContext msgContext =
                     new MessageContext(
                         null,
@@ -100,7 +104,7 @@
                         transportOut,
                         configContext);
                 msgContext.setServerSide(true);
-                
+                msgContext.setProperty(MessageContext.TRANSPORT_WRITER, new OutputStreamWriter(socket.getOutputStream()));
                 
                 AxisEngine engine = new AxisEngine(configContext);
                 try {
@@ -113,14 +117,40 @@
                 engine.receive(msgContext);
             } catch (Throwable e) {
                 log.error(e);
-            } 
+            } finally{
+               try {
+                     socket.close();
+                     if(!started){
+                         serversocket.close();
+                     }
+                } catch (IOException e1) {
+                   log.error(e1);
+                }
+            }
         }
+        
     }
 
     public synchronized void start() {
         started = true;
         Thread thread = new Thread(this);
         thread.start();
+    }
+
+    /* (non-Javadoc)
+     * @see org.apache.axis.transport.TransportReceiver#replyToEPR(java.lang.String)
+     */
+    public EndpointReference replyToEPR(String serviceName) throws AxisFault {
+        return new EndpointReference(
+        AddressingConstants.WSA_REPLY_TO,
+        "http://127.0.0.1:" + (serversocket.getLocalPort()) + "/axis/services/" + serviceName);
+    }
+
+    /* (non-Javadoc)
+     * @see org.apache.axis.transport.TransportReceiver#stop()
+     */
+    public void stop() throws AxisFault {
+        started = false;
     }
 
 }