You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by db...@apache.org on 2006/12/28 10:45:46 UTC

svn commit: r490687 - in /incubator/openejb/trunk/openejb3: assembly/openejb-tomcat/src/main/java/org/apache/openejb/tomcat/ container/openejb-core/src/main/java/org/apache/openejb/ container/openejb-core/src/main/java/org/apache/openejb/assembler/clas...

Author: dblevins
Date: Thu Dec 28 01:45:43 2006
New Revision: 490687

URL: http://svn.apache.org/viewvc?view=rev&rev=490687
Log:
OPENEJB-429: Remote servlces while Embedded

Added:
    incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/ServerFederation.java   (contents, props changed)
      - copied, changed from r490430, incubator/openejb/trunk/openejb3/server/openejb-server/src/main/java/org/apache/openejb/server/ServerFederation.java
Removed:
    incubator/openejb/trunk/openejb3/server/openejb-server/src/main/java/org/apache/openejb/server/ServerFederation.java
Modified:
    incubator/openejb/trunk/openejb3/assembly/openejb-tomcat/src/main/java/org/apache/openejb/tomcat/TomcatLoader.java
    incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/OpenEJB.java
    incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/OpenEjbConfigurationFactory.java
    incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/client/LocalInitialContextFactory.java
    incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/CoreContainerSystem.java
    incubator/openejb/trunk/openejb3/server/openejb-ejbd/src/main/java/org/apache/openejb/server/ejbd/EjbServer.java
    incubator/openejb/trunk/openejb3/server/openejb-ejbd/src/test/java/org/apache/openejb/RemoteiTest.java
    incubator/openejb/trunk/openejb3/server/openejb-http/src/test/java/org/apache/openejb/server/httpd/HttpEjbServerTest.java
    incubator/openejb/trunk/openejb3/server/openejb-server/src/main/java/org/apache/openejb/server/Server.java
    incubator/openejb/trunk/openejb3/server/openejb-server/src/main/java/org/apache/openejb/server/ServiceManager.java

Modified: incubator/openejb/trunk/openejb3/assembly/openejb-tomcat/src/main/java/org/apache/openejb/tomcat/TomcatLoader.java
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/assembly/openejb-tomcat/src/main/java/org/apache/openejb/tomcat/TomcatLoader.java?view=diff&rev=490687&r1=490686&r2=490687
==============================================================================
--- incubator/openejb/trunk/openejb3/assembly/openejb-tomcat/src/main/java/org/apache/openejb/tomcat/TomcatLoader.java (original)
+++ incubator/openejb/trunk/openejb3/assembly/openejb-tomcat/src/main/java/org/apache/openejb/tomcat/TomcatLoader.java Thu Dec 28 01:45:43 2006
@@ -20,7 +20,7 @@
 import org.apache.openejb.OpenEJB;
 import org.apache.openejb.loader.Loader;
 import org.apache.openejb.loader.SystemInstance;
-import org.apache.openejb.server.ServerFederation;
+import org.apache.openejb.core.ServerFederation;
 import org.apache.openejb.server.ServiceException;
 import org.apache.openejb.server.ejbd.EjbServer;
 

Modified: incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/OpenEJB.java
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/OpenEJB.java?view=diff&rev=490687&r1=490686&r2=490687
==============================================================================
--- incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/OpenEJB.java (original)
+++ incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/OpenEJB.java Thu Dec 28 01:45:43 2006
@@ -25,6 +25,7 @@
 import org.apache.openejb.util.Logger;
 import org.apache.openejb.util.Messages;
 import org.apache.openejb.util.SafeToolkit;
+import org.apache.openejb.core.ServerFederation;
 
 import javax.transaction.TransactionManager;
 import java.net.URL;
@@ -71,11 +72,13 @@
             }
             SystemInstance system = SystemInstance.get();
 
+            SafeToolkit toolkit = SafeToolkit.getToolkit("OpenEJB");
+
             if (appServer == null) {
-                logger.i18n.warning("startup.noApplicationServerSpecified");
-            } else {
-                system.setComponent(ApplicationServer.class, appServer);
+                ApplicationServer defaultServer = (ApplicationServer) toolkit.newInstance("org.apache.openejb.core.ServerFederation");
+                appServer = defaultServer;
             }
+            system.setComponent(ApplicationServer.class, appServer);
 
             /*
             * Output startup message
@@ -107,7 +110,6 @@
             }
 
 
-            SafeToolkit toolkit = SafeToolkit.getToolkit("OpenEJB");
 
             /* Uses the EnvProps.ASSEMBLER property to obtain the Assembler impl.
                Default is org.apache.openejb.assembler.classic.Assembler */

Modified: incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/OpenEjbConfigurationFactory.java
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/OpenEjbConfigurationFactory.java?view=diff&rev=490687&r1=490686&r2=490687
==============================================================================
--- incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/OpenEjbConfigurationFactory.java (original)
+++ incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/OpenEjbConfigurationFactory.java Thu Dec 28 01:45:43 2006
@@ -31,7 +31,7 @@
      * Will be used in the future to give the ability to load and reload container systems
      * after OpenEJB has been started.
     public ContainerSystemInfo getContainerSystemInformation()throws OpenEJBException;
+     */
 
-    */
 
 }

Modified: incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/client/LocalInitialContextFactory.java
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/client/LocalInitialContextFactory.java?view=diff&rev=490687&r1=490686&r2=490687
==============================================================================
--- incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/client/LocalInitialContextFactory.java (original)
+++ incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/client/LocalInitialContextFactory.java Thu Dec 28 01:45:43 2006
@@ -25,11 +25,14 @@
 import javax.naming.spi.InitialContextFactory;
 import java.util.Hashtable;
 import java.util.Properties;
+import java.lang.reflect.Method;
+import java.lang.reflect.InvocationTargetException;
 
 public class LocalInitialContextFactory implements javax.naming.spi.InitialContextFactory {
 
     static Context intraVmContext;
     private static OpenEJBInstance openejb;
+    private static final String OPENEJB_EMBEDDED_REMOTABLE = "openejb.embedded.remotable";
 
     public Context getInitialContext(Hashtable env) throws javax.naming.NamingException {
         if (intraVmContext == null) {
@@ -51,6 +54,47 @@
         openejb = new OpenEJBInstance();
         if (openejb.isInitialized()) return;
         openejb.init(properties);
+        if (properties.getProperty(OPENEJB_EMBEDDED_REMOTABLE, "false").equalsIgnoreCase("true")){
+            bootServerServices();
+        }
+    }
+
+    private void bootServerServices() {
+        ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
+
+        try {
+            Class serviceManagerClass = classLoader.loadClass("org.apache.openejb.server.ServiceManager");
+            Method init = serviceManagerClass.getMethod("init");
+            Method start = serviceManagerClass.getMethod("start", boolean.class);
+
+            Object serviceManager = serviceManagerClass.newInstance();
+            try {
+                init.invoke(serviceManager);
+            } catch (InvocationTargetException e) {
+                Throwable cause = e.getCause();
+                String msg = "Option Enabled '"+OPENEJB_EMBEDDED_REMOTABLE+"'.  Error, unable to initialize ServiceManager.  Cause: "+cause.getClass().getName()+": "+cause.getMessage();
+                throw new IllegalStateException(msg, cause);
+            }
+            try {
+                start.invoke(serviceManager, false);
+            } catch (InvocationTargetException e) {
+                Throwable cause = e.getCause();
+                String msg = "Option Enabled '"+OPENEJB_EMBEDDED_REMOTABLE+"'.  Error, unable to start ServiceManager.  Cause: "+cause.getClass().getName()+": "+cause.getMessage();
+                throw new IllegalStateException(msg, cause);
+            }
+        } catch (ClassNotFoundException e) {
+            String msg = "Enabling option '"+OPENEJB_EMBEDDED_REMOTABLE+"' requires class 'org.apache.openejb.server.ServiceManager' to be available.  Make sure you have the openejb-server-*.jar in your classpath and at least one protocol implementation such as openejb-ejbd-*.jar.";
+            throw new IllegalStateException(msg, e);
+        } 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);
+        }
     }
 
     private Context getIntraVmContext(Hashtable env) throws javax.naming.NamingException {

Modified: incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/CoreContainerSystem.java
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/CoreContainerSystem.java?view=diff&rev=490687&r1=490686&r2=490687
==============================================================================
--- incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/CoreContainerSystem.java (original)
+++ incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/CoreContainerSystem.java Thu Dec 28 01:45:43 2006
@@ -22,8 +22,6 @@
 import org.apache.openejb.DeploymentInfo;
 import org.apache.openejb.loader.SystemInstance;
 import org.apache.openejb.core.ivm.naming.IvmContext;
-import org.apache.openejb.core.ivm.naming.ObjectReference;
-import org.apache.openejb.core.ivm.naming.Reference;
 
 /**
  * @org.apache.xbean.XBean element="containerSystem"

Copied: incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/ServerFederation.java (from r490430, incubator/openejb/trunk/openejb3/server/openejb-server/src/main/java/org/apache/openejb/server/ServerFederation.java)
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/ServerFederation.java?view=diff&rev=490687&p1=incubator/openejb/trunk/openejb3/server/openejb-server/src/main/java/org/apache/openejb/server/ServerFederation.java&r1=490430&p2=incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/ServerFederation.java&r2=490687
==============================================================================
--- incubator/openejb/trunk/openejb3/server/openejb-server/src/main/java/org/apache/openejb/server/ServerFederation.java (original)
+++ incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/ServerFederation.java Thu Dec 28 01:45:43 2006
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.openejb.server;
+package org.apache.openejb.core;
 
 import org.apache.openejb.ProxyInfo;
 import org.apache.openejb.util.FastThreadLocal;

Propchange: incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/ServerFederation.java
------------------------------------------------------------------------------
    svn:executable = *

Propchange: incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/ServerFederation.java
------------------------------------------------------------------------------
    svn:keywords = Date Rev Author Id Revision HeadURL

Modified: incubator/openejb/trunk/openejb3/server/openejb-ejbd/src/main/java/org/apache/openejb/server/ejbd/EjbServer.java
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/server/openejb-ejbd/src/main/java/org/apache/openejb/server/ejbd/EjbServer.java?view=diff&rev=490687&r1=490686&r2=490687
==============================================================================
--- incubator/openejb/trunk/openejb3/server/openejb-ejbd/src/main/java/org/apache/openejb/server/ejbd/EjbServer.java (original)
+++ incubator/openejb/trunk/openejb3/server/openejb-ejbd/src/main/java/org/apache/openejb/server/ejbd/EjbServer.java Thu Dec 28 01:45:43 2006
@@ -23,7 +23,7 @@
 import java.util.Properties;
 
 import org.apache.openejb.server.ServiceException;
-import org.apache.openejb.server.ServerFederation;
+import org.apache.openejb.core.ServerFederation;
 import org.apache.openejb.ProxyInfo;
 
 import javax.ejb.EJBMetaData;

Modified: incubator/openejb/trunk/openejb3/server/openejb-ejbd/src/test/java/org/apache/openejb/RemoteiTest.java
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/server/openejb-ejbd/src/test/java/org/apache/openejb/RemoteiTest.java?view=diff&rev=490687&r1=490686&r2=490687
==============================================================================
--- incubator/openejb/trunk/openejb3/server/openejb-ejbd/src/test/java/org/apache/openejb/RemoteiTest.java (original)
+++ incubator/openejb/trunk/openejb3/server/openejb-ejbd/src/test/java/org/apache/openejb/RemoteiTest.java Thu Dec 28 01:45:43 2006
@@ -21,13 +21,11 @@
 import junit.framework.TestSuite;
 import org.apache.openejb.test.TestManager;
 import org.apache.openejb.test.entity.bmp.BmpTestSuite;
-import org.apache.openejb.test.entity.cmp.CmpTestSuite;
 import org.apache.openejb.test.stateful.StatefulTestSuite;
 import org.apache.openejb.test.stateless.StatelessTestSuite;
-import org.apache.openejb.server.Server;
 import org.apache.openejb.server.ServiceDaemon;
 import org.apache.openejb.server.ServiceException;
-import org.apache.openejb.server.ServerFederation;
+import org.apache.openejb.core.ServerFederation;
 import org.apache.openejb.server.ejbd.EjbServer;
 
 import java.util.Properties;

Modified: incubator/openejb/trunk/openejb3/server/openejb-http/src/test/java/org/apache/openejb/server/httpd/HttpEjbServerTest.java
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/server/openejb-http/src/test/java/org/apache/openejb/server/httpd/HttpEjbServerTest.java?view=diff&rev=490687&r1=490686&r2=490687
==============================================================================
--- incubator/openejb/trunk/openejb3/server/openejb-http/src/test/java/org/apache/openejb/server/httpd/HttpEjbServerTest.java (original)
+++ incubator/openejb/trunk/openejb3/server/openejb-http/src/test/java/org/apache/openejb/server/httpd/HttpEjbServerTest.java Thu Dec 28 01:45:43 2006
@@ -19,12 +19,11 @@
 
 import org.apache.openejb.test.TestManager;
 import org.apache.openejb.test.entity.bmp.BmpTestSuite;
-import org.apache.openejb.test.entity.cmp.CmpTestSuite;
 import org.apache.openejb.test.stateful.StatefulTestSuite;
 import org.apache.openejb.test.stateless.StatelessTestSuite;
 import org.apache.openejb.OpenEJB;
+import org.apache.openejb.core.ServerFederation;
 import org.apache.openejb.server.ServiceDaemon;
-import org.apache.openejb.server.ServerFederation;
 import org.apache.openejb.server.ServiceException;
 import org.apache.openejb.server.ejbd.EjbServer;
 import junit.framework.Test;

Modified: incubator/openejb/trunk/openejb3/server/openejb-server/src/main/java/org/apache/openejb/server/Server.java
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/server/openejb-server/src/main/java/org/apache/openejb/server/Server.java?view=diff&rev=490687&r1=490686&r2=490687
==============================================================================
--- incubator/openejb/trunk/openejb3/server/openejb-server/src/main/java/org/apache/openejb/server/Server.java (original)
+++ incubator/openejb/trunk/openejb3/server/openejb-server/src/main/java/org/apache/openejb/server/Server.java Thu Dec 28 01:45:43 2006
@@ -21,6 +21,7 @@
 import java.io.IOException;
 
 import org.apache.openejb.OpenEJB;
+import org.apache.openejb.core.ServerFederation;
 import org.apache.openejb.util.Logger;
 import org.apache.openejb.util.Messages;
 import org.apache.openejb.util.PropertiesService;

Modified: incubator/openejb/trunk/openejb3/server/openejb-server/src/main/java/org/apache/openejb/server/ServiceManager.java
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/server/openejb-server/src/main/java/org/apache/openejb/server/ServiceManager.java?view=diff&rev=490687&r1=490686&r2=490687
==============================================================================
--- incubator/openejb/trunk/openejb3/server/openejb-server/src/main/java/org/apache/openejb/server/ServiceManager.java (original)
+++ incubator/openejb/trunk/openejb3/server/openejb-server/src/main/java/org/apache/openejb/server/ServiceManager.java Thu Dec 28 01:45:43 2006
@@ -48,7 +48,7 @@
 
     private boolean stop = false;
 
-    private ServiceManager() {
+    public ServiceManager() {
     }
 
     public static ServiceManager getManager() {
@@ -224,6 +224,10 @@
     }
 
     public synchronized void start() throws ServiceException {
+        start(true);
+    }
+
+    public synchronized void start(boolean block) throws ServiceException {
         boolean display = System.getProperty("openejb.nobanner") == null;
 
         if (display) {
@@ -249,15 +253,17 @@
             System.out.println("-------");
             System.out.println("Ready!");
         }
+        if (!block) return;
+        
         /*
-         * This will cause the user thread (the thread that keeps the
-         *  vm alive) to go into a state of constant waiting.
-         *  Each time the thread is woken up, it checks to see if
-         *  it should continue waiting.
-         *
-         *  To stop the thread (and the VM), just call the stop method
-         *  which will set 'stop' to true and notify the user thread.
-         */
+        * This will cause the user thread (the thread that keeps the
+        *  vm alive) to go into a state of constant waiting.
+        *  Each time the thread is woken up, it checks to see if
+        *  it should continue waiting.
+        *
+        *  To stop the thread (and the VM), just call the stop method
+        *  which will set 'stop' to true and notify the user thread.
+        */
         try {
             while (!stop) {
 
@@ -268,7 +274,6 @@
         }
         System.out.println("[] exiting vm");
         logger.info("Stopping Remote Server");
-
     }
 
     public synchronized void stop() throws ServiceException {