Author: dblevins
Date: Wed Aug 27 09:59:10 2008
New Revision: 689525

URL: http://svn.apache.org/viewvc?rev=689525&view=rev
Log:
Tweaked the code so the LocalInitialContext doesn't try to start the 
ServiceManager if someone else has

Modified:
    
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/client/LocalInitialContext.java
    
openejb/trunk/openejb3/server/openejb-server/src/main/java/org/apache/openejb/server/ServiceManager.java

Modified: 
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/client/LocalInitialContext.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/client/LocalInitialContext.java?rev=689525&r1=689524&r2=689525&view=diff
==============================================================================
--- 
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/client/LocalInitialContext.java
 (original)
+++ 
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/client/LocalInitialContext.java
 Wed Aug 27 09:59:10 2008
@@ -31,6 +31,7 @@
 import javax.security.auth.login.LoginException;
 import java.util.Hashtable;
 import java.util.Properties;
+import java.util.Map;
 import java.lang.reflect.Method;
 import java.lang.reflect.InvocationTargetException;
 
@@ -57,6 +58,14 @@
         login();
 
         startNetworkServices();
+
+        Properties properties = new Properties();
+        // set standard and vendor properties
+        createEJBContainer(properties);
+    }
+
+    public void createEJBContainer(Map<?,?> properties, String... modules){
+
     }
 
     public void close() throws NamingException {
@@ -113,12 +122,29 @@
         ClassLoader classLoader = 
Thread.currentThread().getContextClassLoader();
 
         try {
-            logger.info("Starting network services");
             Class serviceManagerClass = 
classLoader.loadClass("org.apache.openejb.server.ServiceManager");
+
+            Method get = serviceManagerClass.getMethod("get");
+
+            try {
+                if (get.invoke(null) != null) return;
+            } catch (InvocationTargetException e) {
+                return;
+            }
+
+            logger.info("Starting network services");
+
+            Method getManager = serviceManagerClass.getMethod("getManager");
             Method init = serviceManagerClass.getMethod("init");
             Method start = serviceManagerClass.getMethod("start", 
boolean.class);
 
-            serviceManager = serviceManagerClass.newInstance();
+            try {
+                serviceManager = getManager.invoke(null);
+            } catch (InvocationTargetException e) {
+                String msg = "Option Enabled '" + OPENEJB_EMBEDDED_REMOTABLE + 
"'.  Error, unable to instantiate ServiceManager class 
'org.apache.openejb.server.ServiceManager'.";
+                throw new IllegalStateException(msg, e);
+            }
+
             try {
                 init.invoke(serviceManager);
             } catch (InvocationTargetException e) {
@@ -139,9 +165,6 @@
         } catch (NoSuchMethodException e) {
             String msg = "Option Enabled '" + OPENEJB_EMBEDDED_REMOTABLE + "'. 
 Error, 'init' and 'start' methods not found on as expected on class 
'org.apache.openejb.server.ServiceManager'.  This should never happen.";
             throw new IllegalStateException(msg, e);
-        } catch (InstantiationException e) {
-            String msg = "Option Enabled '" + OPENEJB_EMBEDDED_REMOTABLE + "'. 
 Error, unable to instantiate ServiceManager class 
'org.apache.openejb.server.ServiceManager'.";
-            throw new IllegalStateException(msg, e);
         } catch (IllegalAccessException e) {
             String msg = "Option Enabled '" + OPENEJB_EMBEDDED_REMOTABLE + "'. 
 Error, 'init' and 'start' methods cannot be accessed on class 
'org.apache.openejb.server.ServiceManager'.  The VM SecurityManager settings 
must be adjusted.";
             throw new IllegalStateException(msg, e);

Modified: 
openejb/trunk/openejb3/server/openejb-server/src/main/java/org/apache/openejb/server/ServiceManager.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb3/server/openejb-server/src/main/java/org/apache/openejb/server/ServiceManager.java?rev=689525&r1=689524&r2=689525&view=diff
==============================================================================
--- 
openejb/trunk/openejb3/server/openejb-server/src/main/java/org/apache/openejb/server/ServiceManager.java
 (original)
+++ 
openejb/trunk/openejb3/server/openejb-server/src/main/java/org/apache/openejb/server/ServiceManager.java
 Wed Aug 27 09:59:10 2008
@@ -71,6 +71,11 @@
         return manager;
     }
 
+    public static ServiceManager get() {
+        return manager;
+    }
+
+
     // Have properties files (like xinet.d) that specifies what daemons to
     // Look into the xinet.d file structure again
     // conf/server.d/


Reply via email to