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/04/21 06:31:34 UTC

svn commit: r164000 - in /webservices/axis/trunk/java/modules: core/src/org/apache/axis/clientapi/ core/src/org/apache/axis/transport/http/ samples/test/org/apache/axis/engine/ samples/test/org/apache/axis/integration/

Author: hemapani
Date: Wed Apr 20 21:31:32 2005
New Revision: 164000

URL: http://svn.apache.org/viewcvs?rev=164000&view=rev
Log:
fix the org.apache.axis.engine.EchoRawXMLTest

Added:
    webservices/axis/trunk/java/modules/core/src/org/apache/axis/clientapi/ListenerManager.java
Modified:
    webservices/axis/trunk/java/modules/core/src/org/apache/axis/clientapi/Call.java
    webservices/axis/trunk/java/modules/core/src/org/apache/axis/transport/http/SimpleHTTPServer.java
    webservices/axis/trunk/java/modules/samples/test/org/apache/axis/engine/EchoRawXMLTest.java
    webservices/axis/trunk/java/modules/samples/test/org/apache/axis/integration/UtilServer.java

Modified: webservices/axis/trunk/java/modules/core/src/org/apache/axis/clientapi/Call.java
URL: http://svn.apache.org/viewcvs/webservices/axis/trunk/java/modules/core/src/org/apache/axis/clientapi/Call.java?rev=164000&r1=163999&r2=164000&view=diff
==============================================================================
--- webservices/axis/trunk/java/modules/core/src/org/apache/axis/clientapi/Call.java (original)
+++ webservices/axis/trunk/java/modules/core/src/org/apache/axis/clientapi/Call.java Wed Apr 20 21:31:32 2005
@@ -15,6 +15,7 @@
 import org.apache.axis.addressing.om.MessageInformationHeadersCollection;
 import org.apache.axis.context.EngineContext;
 import org.apache.axis.context.MessageContext;
+import org.apache.axis.context.ServiceContext;
 import org.apache.axis.description.AxisGlobal;
 import org.apache.axis.description.AxisService;
 import org.apache.axis.description.AxisTransportIn;
@@ -44,13 +45,14 @@
 
     private EngineContext engineContext;
 
-    private String Listenertransport;
+    private EndpointReference replyTo;
+    private String Listenertransport = Constants.TRANSPORT_HTTP;
 
-    private boolean useSeparateListener;
+    private boolean useSeparateListener = false;
+    private String callbackServiceName;
 
     private CallbackReceiver callbackReceiver;
-    
-    
+
     public Call() throws AxisFault {
         try {
             //find the deployment mechanism , create
@@ -82,8 +84,6 @@
             this.engineContext = new EngineContext(registry);
             messageInfoHeaders = new MessageInformationHeadersCollection();
             init();
-        } catch (AxisFault e) {
-            throw new AxisFault(e.getMessage(), e);
         } catch (ClassNotFoundException e) {
             throw new AxisFault(e.getMessage(), e);
         } catch (InstantiationException e) {
@@ -113,13 +113,12 @@
         }
     }
 
-
     public Call(EngineContext engineContext) {
         this.properties = new HashMap();
         this.engineContext = engineContext;
     }
 
-    public void sendReceiveAsync(SOAPEnvelope env, Callback callback) throws AxisFault {
+    public void sendReceiveAsync(SOAPEnvelope env, final Callback callback) throws AxisFault {
         EngineConfiguration registry = engineContext.getEngineConfig();
         if (Constants.TRANSPORT_MAIL.equals(transport)) {
             throw new AxisFault("This invocation support only for bi-directional transport");
@@ -127,17 +126,53 @@
         try {
             MessageSender sender = new MessageSender(engineContext);
 
-            AxisTransportIn transportIn = registry.getTransportIn(new QName(transport));
-            AxisTransportOut transportOut = registry.getTransportOut(new QName(transport));
+            final AxisTransportIn transportIn = registry.getTransportIn(new QName(transport));
+            final AxisTransportOut transportOut = registry.getTransportOut(new QName(transport));
 
-            MessageContext msgctx =
+            final MessageContext msgctx =
                 new MessageContext(engineContext, null, null, transportIn, transportOut);
             msgctx.setEnvelope(env);
+
+            if (useSeparateListener) {
+                msgctx.getMessageInformationHeaders().setMessageId(String.valueOf(System.currentTimeMillis()));
+                callbackReceiver.addCallback(msgctx.getMessageID(), callback);
+            }
+
             msgctx.setMessageInformationHeaders(messageInfoHeaders);
 
             sender.send(msgctx);
-            
-            callbackReceiver.addCallback(msgctx.getMessageID(),callback);
+            if (useSeparateListener) {
+                
+                
+                //TODO start the server
+            } else {
+                Runnable newThread = new Runnable() {
+                    public void run() {
+                        try {
+                            MessageContext response =
+                                new MessageContext(
+                                    engineContext,
+                                    msgctx.getProperties(),
+                                    msgctx.getSessionContext(),
+                                    msgctx.getTransportIn(),
+                                    transportOut);
+                            response.setServerSide(false);
+
+                            TransportReceiver receiver = response.getTransportIn().getReciever();
+                            receiver.invoke(response);
+                            SOAPEnvelope resenvelope = response.getEnvelope();
+                            AsyncResult asyncResult = new AsyncResult();
+                            asyncResult.setResult(resenvelope);
+                            callback.onComplete(asyncResult);
+                        } catch (AxisFault e) {
+                            callback.reportError(e);
+                        }
+
+                    }
+                };
+                (new Thread(newThread)).start();
+            }
+
         } catch (OMException e) {
             throw AxisFault.makeFault(e);
         } catch (IOException e) {
@@ -218,9 +253,19 @@
     private void init() throws AxisFault {
         messageInfoHeaders = new MessageInformationHeadersCollection();
         AxisService callbackService = new AxisService();
-        callbackService.setName(new QName(CallbackReceiver.SERVIC_NAME));
+        callbackServiceName = CallbackReceiver.SERVIC_NAME + System.currentTimeMillis();
+        callbackService.setName(new QName(callbackServiceName));
         callbackReceiver = new CallbackReceiver();
         callbackService.setMessageReceiver(callbackReceiver);
+
+        ListenerManager.makeSureStarted();
+
+        ListenerManager.getEngineContext().addService(new ServiceContext(callbackService));
+
+    }
+
+    public void close() {
+        ListenerManager.stopAServer();
     }
 
     /**

Added: 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=164000&view=auto
==============================================================================
--- webservices/axis/trunk/java/modules/core/src/org/apache/axis/clientapi/ListenerManager.java (added)
+++ webservices/axis/trunk/java/modules/core/src/org/apache/axis/clientapi/ListenerManager.java Wed Apr 20 21:31:32 2005
@@ -0,0 +1,73 @@
+/*
+ * Copyright 2004,2005 The Apache Software Foundation.
+ *
+ * Licensed 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.
+ *
+ *  Runtime state of the engine
+ */
+package org.apache.axis.clientapi;
+
+import java.net.ServerSocket;
+
+import org.apache.axis.addressing.AddressingConstants;
+import org.apache.axis.addressing.EndpointReference;
+import org.apache.axis.context.EngineContext;
+import org.apache.axis.description.AxisGlobal;
+import org.apache.axis.engine.AxisFault;
+import org.apache.axis.engine.EngineConfigurationImpl;
+import org.apache.axis.transport.http.SimpleHTTPServer;
+
+public class ListenerManager {
+    private static EngineContext engineContext;
+    private static boolean started = false;
+    private static int numberOfserver = 0;
+    private static SimpleHTTPServer simpleHttpServer;
+    private static ServerSocket scoket;
+
+    public static void makeSureStarted() throws AxisFault {
+        synchronized (ListenerManager.class) {
+            try {
+                if (started == false) {
+                    engineContext =
+                        new EngineContext(new EngineConfigurationImpl(new AxisGlobal()));
+                    scoket = new ServerSocket(6060);
+                    simpleHttpServer = new SimpleHTTPServer(engineContext, scoket);
+                    simpleHttpServer.start();
+                    started = true;
+                    numberOfserver++;
+                }
+            } catch (Exception e) {
+                throw new AxisFault(e.getMessage(), e);
+            }
+
+        }
+
+    }
+    /**
+     * @return
+     */
+    public static EngineContext getEngineContext() {
+        return engineContext;
+    }
+
+    public static void stopAServer() {
+        numberOfserver--;
+        if (numberOfserver == 0) {
+            simpleHttpServer.stop();
+        }
+    }
+    
+    public EndpointReference replyToEPR(String serviceName){
+        return new EndpointReference(AddressingConstants.WSA_REPLY_TO,"http://127.0.0.1:"+scoket.getLocalPort()+"/axis/services/"+serviceName);
+    }
+}

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=164000&r1=163999&r2=164000&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 Wed Apr 20 21:31:32 2005
@@ -30,7 +30,6 @@
 import org.apache.axis.context.MessageContext;
 import org.apache.axis.description.AxisTransportOut;
 import org.apache.axis.engine.AxisFault;
-import org.apache.axis.engine.EngineConfiguration;
 import org.apache.axis.engine.EngineRegistryFactory;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
@@ -44,7 +43,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 implements Runnable{
     /**
      * Field log
      */
@@ -76,8 +75,9 @@
      *
      * @param reg
      */
-    public SimpleHTTPServer(EngineContext reg) {
+    public SimpleHTTPServer(EngineContext reg,ServerSocket serverSoc) {
         this.engineReg = reg;
+        this.serverSocket = serverSoc;
     }
 
     /**
@@ -86,8 +86,9 @@
      * @param dir
      * @throws AxisFault
      */
-    public SimpleHTTPServer(String dir) throws AxisFault {
+    public SimpleHTTPServer(String dir,ServerSocket serverSoc) throws AxisFault {
         try {
+            this.serverSocket = serverSoc;
             Class erClass = Class.forName(
                     "org.apache.axis.deployment.EngineRegistryFactoryImpl");
             EngineRegistryFactory erfac =
@@ -196,7 +197,8 @@
      * @throws Exception
      */
     public void start() throws Exception {
-        run();
+        Thread newThread = new Thread(this);
+        newThread.start();
     }
 
     /**
@@ -258,9 +260,10 @@
         if (args.length != 2) {
             System.out.println("SimpeHttpReciver repositoryLocation port");
         }
-        SimpleHTTPServer reciver = new SimpleHTTPServer(args[0]);
         ServerSocket serverSoc = null;
         serverSoc = new ServerSocket(Integer.parseInt(args[1]));
+        SimpleHTTPServer reciver = new SimpleHTTPServer(args[0],serverSoc);
+        
         reciver.setServerSocket(serverSoc);
         Thread thread = new Thread(reciver);
         thread.setDaemon(true);

Modified: webservices/axis/trunk/java/modules/samples/test/org/apache/axis/engine/EchoRawXMLTest.java
URL: http://svn.apache.org/viewcvs/webservices/axis/trunk/java/modules/samples/test/org/apache/axis/engine/EchoRawXMLTest.java?rev=164000&r1=163999&r2=164000&view=diff
==============================================================================
--- webservices/axis/trunk/java/modules/samples/test/org/apache/axis/engine/EchoRawXMLTest.java (original)
+++ webservices/axis/trunk/java/modules/samples/test/org/apache/axis/engine/EchoRawXMLTest.java Wed Apr 20 21:31:32 2005
@@ -115,7 +115,7 @@
         org.apache.axis.clientapi.Call call = new org.apache.axis.clientapi.Call();
         EndpointReference targetEPR = new EndpointReference(AddressingConstants.WSA_TO, "http://127.0.0.1:" + UtilServer.TESTING_PORT + "/axis/services/EchoXMLService");
         call.setTo(targetEPR);
-        call.setListenerTransport("http", true);
+        call.setListenerTransport("http", false);
 
         Callback callback = new Callback() {
             public void onComplete(AsyncResult result) {

Modified: webservices/axis/trunk/java/modules/samples/test/org/apache/axis/integration/UtilServer.java
URL: http://svn.apache.org/viewcvs/webservices/axis/trunk/java/modules/samples/test/org/apache/axis/integration/UtilServer.java?rev=164000&r1=163999&r2=164000&view=diff
==============================================================================
--- webservices/axis/trunk/java/modules/samples/test/org/apache/axis/integration/UtilServer.java (original)
+++ webservices/axis/trunk/java/modules/samples/test/org/apache/axis/integration/UtilServer.java Wed Apr 20 21:31:32 2005
@@ -57,11 +57,11 @@
                 throw new AxisFault("Thread interuptted", e1);
             }
 
-            reciver = new SimpleHTTPServer(er);
+            
 
             ServerSocket serverSoc = null;
             serverSoc = new ServerSocket(Constants.TESTING_PORT);
-            reciver.setServerSocket(serverSoc);
+            reciver = new SimpleHTTPServer(er,serverSoc);
             Thread thread = new Thread(reciver);
             thread.setDaemon(true);