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 {