Author: indika
Date: Fri Jan 18 00:37:28 2008
New Revision: 12466

Log:

improve JMX support


Modified:
   
branches/esb/java/1.6/esb/java/modules/core/src/main/java/org/wso2/esb/ServiceBusManager.java
   
branches/esb/java/1.6/esb/java/modules/core/src/main/java/org/wso2/esb/transport/tomcat/StartUpServlet.java

Modified: 
branches/esb/java/1.6/esb/java/modules/core/src/main/java/org/wso2/esb/ServiceBusManager.java
==============================================================================
--- 
branches/esb/java/1.6/esb/java/modules/core/src/main/java/org/wso2/esb/ServiceBusManager.java
       (original)
+++ 
branches/esb/java/1.6/esb/java/modules/core/src/main/java/org/wso2/esb/ServiceBusManager.java
       Fri Jan 18 00:37:28 2008
@@ -59,7 +59,6 @@
 import java.lang.management.ManagementFactory;
 import java.net.UnknownHostException;
 import java.rmi.NoSuchObjectException;
-import java.rmi.RemoteException;
 import java.rmi.registry.LocateRegistry;
 import java.rmi.server.UnicastRemoteObject;
 import java.util.*;
@@ -90,6 +89,7 @@
     private String esbHomeLocation;
     private JMXConnectorServer jmxConnectorServer;
     private java.rmi.registry.Registry rmiRegistry;
+    private boolean hasAlreadyInit = false;
 
     public static ServiceBusManager getInstance() {
         if (instance == null) {
@@ -99,25 +99,17 @@
     }
 
     private ServiceBusManager() {
-        this(ServiceBusConfiguration.getInstance());
-        if 
(XmlConfigurationFactory.getXmlConfiguration(ServiceBusConstants.ESB_WEB_XML_KEY)
 == null) {
-            try {
-                String serverWebXML = 
System.getProperty(ServiceBusConstants.ESB_SERVER_WEB_XML);
-                if (serverWebXML == null || "".equals(serverWebXML)) {
-                    serverWebXML = "conf" + File.separator + 
ServiceBusConstants.ESB_SERVER_WEB_XML;
-                }
-                
XmlConfigurationFactory.init(ServiceBusConstants.ESB_WEB_XML_KEY,
-                    serverWebXML, ServiceBusConstants.ESB_XML_NAMESPACE);
-            } catch (ServerException e) {
-                log.error("Error loading server-web.xml", e);
-            }
-        }
     }
 
     public void init() {
-        initSystemProperties();
+        initSystemProperties();          
+        if (hasAlreadyInit) {
+            return;
+        }
         createTempAxisWorkDirectory();
         HibernateConfigCache.clearCache();
+        initServiceBusConfiguration();
+        hasAlreadyInit = true;
     }
 
     public void start() throws ServiceBusException {
@@ -171,6 +163,22 @@
         stopJMXService();
     }
 
+    private void initServiceBusConfiguration() {
+        this.esbConfiguration = ServiceBusConfiguration.getInstance();
+        if 
(XmlConfigurationFactory.getXmlConfiguration(ServiceBusConstants.ESB_WEB_XML_KEY)
 == null) {
+            try {
+                String serverWebXML = 
System.getProperty(ServiceBusConstants.ESB_SERVER_WEB_XML);
+                if (serverWebXML == null || "".equals(serverWebXML)) {
+                    serverWebXML = "conf" + File.separator + 
ServiceBusConstants.ESB_SERVER_WEB_XML;
+                }
+                
XmlConfigurationFactory.init(ServiceBusConstants.ESB_WEB_XML_KEY,
+                    serverWebXML, ServiceBusConstants.ESB_XML_NAMESPACE);
+            } catch (ServerException e) {
+                log.error("Error loading server-web.xml", e);
+            }
+        }
+    }
+
     private void addShutdownHook() {
         shutdownHook = new Thread() {
             public void run() {
@@ -195,10 +203,6 @@
         return shutdownHook;
     }
 
-    public ServiceBusManager(ServiceBusConfiguration esbConfiguration) {
-        this.esbConfiguration = esbConfiguration;
-    }
-
     public ServiceBusConfiguration getEsbConfiguration() {
         return esbConfiguration;
     }
@@ -535,14 +539,18 @@
             int jmxPortInt = Integer.parseInt(jmxPort);
             MBeanServer mbs = ManagementFactory.getPlatformMBeanServer();
 
-            //creating local registry
-            try {
-                rmiRegistry = LocateRegistry.createRegistry(jmxPortInt);
-            } catch (RemoteException e) {
-                String msg = "Couldn't create a localregistry(RMI)";
-                handleException(msg, e);
+            while (true) {
+                //creating local registry
+                try {
+                    rmiRegistry = LocateRegistry.createRegistry(jmxPortInt);
+                    break;
+                } catch (Exception ignored) {
+                    String msg = "Couldn't create a localregistry(RMI) : port 
" + jmxPortInt +
+                        " already in use. Trying alternate";
+                    log.warn(msg);
+                    jmxPortInt++;
+                }
             }
-
             // Create an RMI connector and start it
             try {
                 String jmxURL = "service:jmx:rmi:///jndi/rmi://" +

Modified: 
branches/esb/java/1.6/esb/java/modules/core/src/main/java/org/wso2/esb/transport/tomcat/StartUpServlet.java
==============================================================================
--- 
branches/esb/java/1.6/esb/java/modules/core/src/main/java/org/wso2/esb/transport/tomcat/StartUpServlet.java
 (original)
+++ 
branches/esb/java/1.6/esb/java/modules/core/src/main/java/org/wso2/esb/transport/tomcat/StartUpServlet.java
 Fri Jan 18 00:37:28 2008
@@ -64,7 +64,7 @@
         String esbhome = resolveEsbHome(servletConfig);
         if (esbhome != null || !"".equals(esbhome)) {
             System.setProperty(ServiceBusConstants.ESB_HOME, esbhome);
-            ServiceBusManager.getInstance().initSystemProperties();
+            ServiceBusManager.getInstance().init();
             try {
                 URL url = new URL("file:" + esbhome + File.separator
                     + ServiceBusConstants.ESB_CONF_DIRECTORY + 
"log4j.properties");

_______________________________________________
Esb-java-dev mailing list
[email protected]
http://wso2.org/cgi-bin/mailman/listinfo/esb-java-dev

Reply via email to