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 di...@apache.org on 2006/11/30 14:34:55 UTC

svn commit: r480919 - in /webservices/axis2/branches/java/1_1/modules/kernel/src/org/apache/axis2/transport/http/server: DefaultHttpConnectionFactory.java DefaultHttpServiceProcessor.java

Author: dims
Date: Thu Nov 30 05:34:54 2006
New Revision: 480919

URL: http://svn.apache.org/viewvc?view=rev&rev=480919
Log:
Fix for AXIS2-1751 - Allow Axis2 to know the IP address and host name of the remote client when using the SimpleHTTPServer

Modified:
    webservices/axis2/branches/java/1_1/modules/kernel/src/org/apache/axis2/transport/http/server/DefaultHttpConnectionFactory.java
    webservices/axis2/branches/java/1_1/modules/kernel/src/org/apache/axis2/transport/http/server/DefaultHttpServiceProcessor.java

Modified: webservices/axis2/branches/java/1_1/modules/kernel/src/org/apache/axis2/transport/http/server/DefaultHttpConnectionFactory.java
URL: http://svn.apache.org/viewvc/webservices/axis2/branches/java/1_1/modules/kernel/src/org/apache/axis2/transport/http/server/DefaultHttpConnectionFactory.java?view=diff&rev=480919&r1=480918&r2=480919
==============================================================================
--- webservices/axis2/branches/java/1_1/modules/kernel/src/org/apache/axis2/transport/http/server/DefaultHttpConnectionFactory.java (original)
+++ webservices/axis2/branches/java/1_1/modules/kernel/src/org/apache/axis2/transport/http/server/DefaultHttpConnectionFactory.java Thu Nov 30 05:34:54 2006
@@ -39,7 +39,7 @@
 public class DefaultHttpConnectionFactory implements HttpConnectionFactory {
 
 	final HttpParams params;
-	
+
     public DefaultHttpConnectionFactory(final HttpParams params) {
         super();
         if (params == null) {
@@ -47,12 +47,36 @@
         }
         this.params = params;
     }
-    
+
     public HttpServerConnection newConnection(final Socket socket)
             throws IOException {
-        DefaultHttpServerConnection conn = new DefaultHttpServerConnection();
+        DefaultHttpServerConnection conn = new Axis2HttpServerConnection();
         conn.bind(socket, this.params);
         return conn;
     }
-    
+
+    public class Axis2HttpServerConnection extends DefaultHttpServerConnection {
+        public Axis2HttpServerConnection() {
+            super();
+        }
+
+        public String getRemoteIPAddress() {
+            java.net.SocketAddress sa = socket.getRemoteSocketAddress();
+            if (sa instanceof java.net.InetSocketAddress) {
+            	return ((java.net.InetSocketAddress) sa).getAddress().getHostAddress();
+            } else {
+            	return sa.toString();
+            }
+        }
+
+        public String getRemoteHostName() {
+        	java.net.SocketAddress sa = socket.getRemoteSocketAddress();
+        	if (sa instanceof java.net.InetSocketAddress) {
+          	return ((java.net.InetSocketAddress) sa).getHostName();
+          } else {
+          	return sa.toString(); // fail-safe and fall back to something which one can use in place of the host name
+          }
+        }
+    }
+
 }

Modified: webservices/axis2/branches/java/1_1/modules/kernel/src/org/apache/axis2/transport/http/server/DefaultHttpServiceProcessor.java
URL: http://svn.apache.org/viewvc/webservices/axis2/branches/java/1_1/modules/kernel/src/org/apache/axis2/transport/http/server/DefaultHttpServiceProcessor.java?view=diff&rev=480919&r1=480918&r2=480919
==============================================================================
--- webservices/axis2/branches/java/1_1/modules/kernel/src/org/apache/axis2/transport/http/server/DefaultHttpServiceProcessor.java (original)
+++ webservices/axis2/branches/java/1_1/modules/kernel/src/org/apache/axis2/transport/http/server/DefaultHttpServiceProcessor.java Thu Nov 30 05:34:54 2006
@@ -56,6 +56,7 @@
 import org.apache.http.RequestLine;
 import org.apache.http.StatusLine;
 import org.apache.http.UnsupportedHttpVersionException;
+import org.apache.http.impl.DefaultHttpServerConnection;
 import org.apache.http.entity.StringEntity;
 import org.apache.http.protocol.HttpContext;
 import org.apache.http.protocol.ResponseConnControl;
@@ -72,6 +73,7 @@
     private final SessionManager sessionManager;
     private final Worker worker;
     private final IOProcessorCallback callback;
+    private HttpServerConnection conn;
 
     private HttpContext httpcontext = null;
 
@@ -82,6 +84,7 @@
             final Worker worker,
             final IOProcessorCallback callback) {
         super(conn);
+        this.conn = conn;
         if (worker == null) {
             throw new IllegalArgumentException("Worker may not be null");
         }
@@ -147,6 +150,14 @@
 
         MessageContext msgContext = new MessageContext();
         msgContext.setIncomingTransportName(Constants.TRANSPORT_HTTP);
+
+        if (conn instanceof DefaultHttpConnectionFactory.Axis2HttpServerConnection) {
+            DefaultHttpConnectionFactory.Axis2HttpServerConnection axis2Con =
+                (DefaultHttpConnectionFactory.Axis2HttpServerConnection) conn;
+            msgContext.setProperty(MessageContext.REMOTE_ADDR, axis2Con.getRemoteIPAddress());
+            LOG.debug("Remote address of the connection : " + axis2Con.getRemoteIPAddress());
+        }
+
         try {
             TransportOutDescription transportOut = this.configurationContext.getAxisConfiguration()
                     .getTransportOut(new QName(Constants.TRANSPORT_HTTP));



---------------------------------------------------------------------
To unsubscribe, e-mail: axis-cvs-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-cvs-help@ws.apache.org