[esb-java-dev] svn commit r6163 - in trunk/esb/java/modules: core/src/main/java/org/wso2/esb core/src/main/java/org/wso2/esb/transport/tomcat distribution/src/main/bin

svn at wso2.org svn at wso2.org
Tue Aug 7 07:49:44 PDT 2007


Author: indika
Date: Tue Aug  7 07:49:26 2007
New Revision: 6163

Modified:
   trunk/esb/java/modules/core/src/main/java/org/wso2/esb/ServiceBusManager.java
   trunk/esb/java/modules/core/src/main/java/org/wso2/esb/transport/tomcat/StartUpServlet.java
   trunk/esb/java/modules/distribution/src/main/bin/wso2-esb.sh
Log:
add function to select an alternate port if http port is inuse 


Modified: trunk/esb/java/modules/core/src/main/java/org/wso2/esb/ServiceBusManager.java
==============================================================================
--- trunk/esb/java/modules/core/src/main/java/org/wso2/esb/ServiceBusManager.java	(original)
+++ trunk/esb/java/modules/core/src/main/java/org/wso2/esb/ServiceBusManager.java	Tue Aug  7 07:49:26 2007
@@ -22,6 +22,7 @@
 import org.apache.axis2.context.ConfigurationContext;
 import org.apache.axis2.context.ConfigurationContextFactory;
 import org.apache.axis2.description.Parameter;
+import org.apache.axis2.description.TransportInDescription;
 import org.apache.axis2.engine.ListenerManager;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
@@ -39,8 +40,10 @@
 import java.io.File;
 import java.io.InputStream;
 import java.net.UnknownHostException;
+import java.net.ServerSocket;
 import java.util.Hashtable;
 import java.util.Properties;
+import java.util.Iterator;
 
 /*
  * The Service bus manager
@@ -51,7 +54,7 @@
 
     public static int httpPort = 8080;
     public static int httpsPort = 9443;
-    public static String host="localhost";
+    public static String host = "localhost";
     private ServiceBusConfiguration esbConfiguration;
     public ConfigurationContext configurationContext;
     private NetworkServerControl networkServerControl;
@@ -240,11 +243,21 @@
         configurationContext.setProperty(ServiceBusConstants.GENERATED_PAGES, fileContents);
     }
 
-    private void initListenerManager() {
+    private void initListenerManager() throws AxisFault {
         listenerManager = new ListenerManager();
         listenerManager.init(configurationContext);
-        listenerManager.start();
+        // listenerManager.start();
         ListenerManager.defaultConfigurationContext = configurationContext;
+        // decide on HTTP port to execute
+        selectPort(configurationContext);
+        Iterator iter = configurationContext.getAxisConfiguration().
+                getTransportsIn().keySet().iterator();
+        while (iter.hasNext()) {
+            String trp = (String) iter.next();
+            TransportInDescription trsIn = (TransportInDescription)
+                    configurationContext.getAxisConfiguration().getTransportsIn().get(trp);
+            listenerManager.addListener(trsIn, false);
+        }
     }
 
     public void stop() throws ServiceBusException, AxisFault {
@@ -329,7 +342,7 @@
                 System.setProperty(ServiceBusConstants.ESB_HIBERNATE_CFG_XML,
                                    ServiceBusConstants.ESB_HIBERNATE_CFG_XML);
             }
-        }         
+        }
         String derbyHome = System.getProperty(ServiceBusConstants.ESB_DERBY_SYSTEM_HOME);
         if (derbyHome == null) {
             System.setProperty(ServiceBusConstants.ESB_DERBY_SYSTEM_HOME,
@@ -373,4 +386,52 @@
         }
     }
 
+    private static void selectPort(ConfigurationContext configCtx) {
+        // check if configured port is available
+        TransportInDescription trsIn = (TransportInDescription)
+                configCtx.getAxisConfiguration().getTransportsIn().get("http");
+
+        if (trsIn != null) {
+
+            int port = 8080;
+
+            String strPort = System.getProperty("port");
+            if (strPort != null) {
+                // port is specified as a VM parameter
+                try {
+                    port = new Integer(strPort).intValue();
+                } catch (NumberFormatException e) {
+                    // user supplied parameter is not a valid integer. so use the port in configuration.
+                    log.error("Given port is not a valid integer. Port specified in the configuration is used for the server.");
+                    port = Integer.parseInt(trsIn.getParameter("port").getValue().toString());
+                }
+
+            } else {
+                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) {
+                    System.out.println("Port " + port + " already in use. Trying alternate");
+                    if (port == 8080) {
+                        port = 8008;
+                    } else {
+                        port++;
+                    }
+                } finally {
+                    if (sock != null) {
+                        try {
+                            sock.close();
+                        } catch (Exception e) {
+                        }
+                    }
+                }
+            }
+        }
+    }
 }

Modified: trunk/esb/java/modules/core/src/main/java/org/wso2/esb/transport/tomcat/StartUpServlet.java
==============================================================================
--- trunk/esb/java/modules/core/src/main/java/org/wso2/esb/transport/tomcat/StartUpServlet.java	(original)
+++ trunk/esb/java/modules/core/src/main/java/org/wso2/esb/transport/tomcat/StartUpServlet.java	Tue Aug  7 07:49:26 2007
@@ -57,6 +57,9 @@
 
     public void init(ServletConfig servletConfig) throws ServletException {
         ServletContext servletContext = servletConfig.getServletContext();
+        if ("true".equals(servletContext.getAttribute("hasAlreadyInit"))) {
+            return;
+        }
         String esbhome = System.getProperty(ServiceBusConstants.ESB_HOME);
         if (esbhome == null || "".equals(esbhome)) {
             esbhome = servletConfig.getInitParameter(ServiceBusConstants.ESB_HOME);
@@ -76,9 +79,6 @@
                 return;
             }
         }
-        if ("true".equals(servletContext.getAttribute("hasAlreadyInit"))) {
-            return;
-        }
         serviceBusManager = ServiceBusManager.getInstance();
         try {
             serviceBusManager.start();

Modified: trunk/esb/java/modules/distribution/src/main/bin/wso2-esb.sh
==============================================================================
--- trunk/esb/java/modules/distribution/src/main/bin/wso2-esb.sh	(original)
+++ trunk/esb/java/modules/distribution/src/main/bin/wso2-esb.sh	Tue Aug  7 07:49:26 2007
@@ -95,13 +95,13 @@
 
 if [ "$jdk_15" ]; then
     echo " Using Bouncy castle JAR for Java 1.5"
-    for f in $ESB_HOME/lib/bcprov-jdk15*.jar
+    for f in $ESB_HOME/webapp/WEB-INF/lib/bcprov-jdk15*.jar
     do
       ESB_CLASSPATH=$f:$ESB_CLASSPATH
     done
 elif [ "$jdk_14" ]; then
     echo " Using Bouncy castle JAR for Java 1.4"
-    for f in $ESB_HOME/lib/bcprov-jdk13*.jar
+    for f in $ESB_HOME/webapp/WEB-INF/lib/bcprov-jdk13*.jar
     do
       ESB_CLASSPATH=$f:$ESB_CLASSPATH
     done




More information about the Esb-java-dev mailing list