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