[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