Author: asankha
Date: Thu Nov 23 04:53:35 2006
New Revision: 478554

URL: http://svn.apache.org/viewvc?view=rev&rev=478554
Log:
Try to start Synapse HTTP on port 8080
if this fails, try the next available port starting from 8008 (8009, 8010...etc)

Modified:
    
incubator/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/SynapseHTTPServer.java

Modified: 
incubator/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/SynapseHTTPServer.java
URL: 
http://svn.apache.org/viewvc/incubator/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/SynapseHTTPServer.java?view=diff&rev=478554&r1=478553&r2=478554
==============================================================================
--- 
incubator/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/SynapseHTTPServer.java
 (original)
+++ 
incubator/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/SynapseHTTPServer.java
 Thu Nov 23 04:53:35 2006
@@ -28,6 +28,8 @@
 import javax.xml.namespace.QName;
 import java.io.File;
 import java.util.Iterator;
+import java.net.ServerSocket;
+import java.net.Socket;
 
 /**
  * Starts all transports as specified on the axis2.xml
@@ -60,6 +62,9 @@
                 listenerManager.init(configctx);
             }
 
+            // decide on HTTP port to execute
+            selectPort(configctx);
+
             Iterator iter = configctx.getAxisConfiguration().
                 getTransportsIn().keySet().iterator();
             while (iter.hasNext()) {
@@ -77,6 +82,38 @@
         } catch (Throwable t) {
             t.printStackTrace();
             System.out.println("[SynapseHTTPServer] Startup failed...");
+        }
+    }
+
+    private static void selectPort(ConfigurationContext configCtx) {
+        // check if configured port is available
+        TransportInDescription trsIn = (TransportInDescription)
+            configCtx.getAxisConfiguration().getTransportsIn().get(new 
QName("http"));
+
+        if (trsIn != null) {
+
+            int port = 
Integer.parseInt(trsIn.getParameter("port").getValue().toString());
+
+            while (true) {
+                ServerSocket sock = null;
+                try {
+                    sock = new ServerSocket(port);
+                    
trsIn.getParameter("port").setValue(Integer.toString(port));
+                    break;
+                } catch (Exception e) {
+                    if (port == 8080) {
+                        port = 8008;
+                    } else {
+                        port++;
+                    }
+                } finally {
+                    if (sock != null) {
+                        try {
+                            sock.close();
+                        } catch (Exception e) {}
+                    }
+                }
+            }
         }
     }
 



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to