You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by rm...@apache.org on 2011/12/01 22:18:34 UTC
svn commit: r1209244 - in /openejb/trunk/openejb/container: openejb-core/
openejb-core/src/main/java/org/apache/openejb/cdi/
openejb-core/src/main/java/org/apache/openejb/config/
openejb-core/src/main/java/org/apache/openejb/util/ openejb-core/src/main...
Author: rmannibucau
Date: Thu Dec 1 21:18:31 2011
New Revision: 1209244
URL: http://svn.apache.org/viewvc?rev=1209244&view=rev
Log:
OPENEJB-1627 some work about OSGi
Added:
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/util/classloader/
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/util/classloader/MultipleClassLoader.java
Modified:
openejb/trunk/openejb/container/openejb-core/pom.xml
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/cdi/ThreadSingletonServiceImpl.java
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/ValidationContext.java
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/WlsConversion.java
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/util/Logger.java
openejb/trunk/openejb/container/openejb-loader/pom.xml
openejb/trunk/openejb/container/openejb-osgi/pom.xml
openejb/trunk/openejb/container/openejb-osgi/src/main/java/org/apache/openejb/core/osgi/impl/Activator.java
Modified: openejb/trunk/openejb/container/openejb-core/pom.xml
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/pom.xml?rev=1209244&r1=1209243&r2=1209244&view=diff
==============================================================================
--- openejb/trunk/openejb/container/openejb-core/pom.xml (original)
+++ openejb/trunk/openejb/container/openejb-core/pom.xml Thu Dec 1 21:18:31 2011
@@ -32,6 +32,7 @@
<name>OpenEJB :: Container :: Core</name>
<properties>
<openejb.osgi.import.pkg>
+ !org.apache.geronimo.specs,
org.apache.activemq.ra;resolution:=optional,
org.apache.commons.dbcp.managed;resolution:=optional,
oracle.toplink.*;resolution:=optional,
@@ -52,6 +53,8 @@
org.apache.xerces*;resolution:=optional,
org.apache.xml.resolver*;resolution:=optional,
org.junit*;resolution:=optional,
+ org.apache.log4j.*;resolution:=optional,
+ org.slf4j.*;resolution:=optional,
javax.annotation;version="[1.1.0,2.0.0)",
javax.annotation.security;version="[1.1.0,2.0.0)",
javax.annotation.sql;version="[1.1.0,2.0.0)",
@@ -61,12 +64,23 @@
javax.ejb.embeddable;version=3.1,
javax.ejb.spi;version=3.1,
javax.xml.ws,
+ org.apache.openejb.api,
+ org.apache.openejb.loader,
+ org.apache.openejb.jee,
+ org.apache.openejb.jee.jpa,
+ org.apache.openejb.jee.bval,
+ org.apache.openejb.jee.oejb2,
+ org.apache.openejb.jee.oejb3,
+ org.apache.openejb.jee.sun;resolution:=optional,
+ org.apache.openejb.jee.wls,
+ !org.apache.openejb.jee.was,
*
</openejb.osgi.import.pkg>
<openejb.osgi.export>
- !org.apache.openejb.client,
+ !org.apache.openejb.javaee.api.activator,
org.apache.openejb.cdi.*;version=${openejb.osgi.export.version},
org.apache.openejb*;version=${openejb.osgi.export.version}
+ org.apache.openejb;version=${openejb.osgi.export.version}
</openejb.osgi.export>
</properties>
<build>
Modified: openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/cdi/ThreadSingletonServiceImpl.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/cdi/ThreadSingletonServiceImpl.java?rev=1209244&r1=1209243&r2=1209244&view=diff
==============================================================================
--- openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/cdi/ThreadSingletonServiceImpl.java (original)
+++ openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/cdi/ThreadSingletonServiceImpl.java Thu Dec 1 21:18:31 2011
@@ -25,6 +25,7 @@ import org.apache.openejb.loader.SystemI
import org.apache.openejb.spi.ContainerSystem;
import org.apache.openejb.util.LogCategory;
import org.apache.openejb.util.Logger;
+import org.apache.openejb.util.classloader.MultipleClassLoader;
import org.apache.webbeans.config.OpenWebBeansConfiguration;
import org.apache.webbeans.config.WebBeansContext;
import org.apache.webbeans.spi.ContainerLifecycle;
@@ -87,10 +88,14 @@ public class ThreadSingletonServiceImpl
optional(services, ConversationService.class, "org.apache.webbeans.jsf.DefaultConversationService");
- WebBeansContext webBeansContext = new WebBeansContext(services, properties);
- appContext.set(WebBeansContext.class, webBeansContext);
- Object old = contextEntered(webBeansContext);
+ ClassLoader oldClassLoader = Thread.currentThread().getContextClassLoader();
+ Thread.currentThread().setContextClassLoader(new MultipleClassLoader(oldClassLoader, ThreadSingletonServiceImpl.class.getClassLoader()));
+ WebBeansContext webBeansContext;
+ Object old = null;
try {
+ webBeansContext = new WebBeansContext(services, properties);
+ appContext.set(WebBeansContext.class, webBeansContext);
+ old = contextEntered(webBeansContext);
setConfiguration(webBeansContext.getOpenWebBeansConfiguration());
try {
webBeansContext.getService(ContainerLifecycle.class).startApplication(startupObject);
@@ -99,6 +104,7 @@ public class ThreadSingletonServiceImpl
}
} finally {
contextExited(old);
+ Thread.currentThread().setContextClassLoader(oldClassLoader);
}
}
Modified: openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/ValidationContext.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/ValidationContext.java?rev=1209244&r1=1209243&r2=1209244&view=diff
==============================================================================
--- openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/ValidationContext.java (original)
+++ openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/ValidationContext.java Thu Dec 1 21:18:31 2011
@@ -16,10 +16,8 @@
*/
package org.apache.openejb.config;
-import org.apache.openejb.jee.was.v6.common.QName;
-
-import java.util.List;
import java.util.ArrayList;
+import java.util.List;
/**
* @version $Rev$ $Date$
Modified: openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/WlsConversion.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/WlsConversion.java?rev=1209244&r1=1209243&r2=1209244&view=diff
==============================================================================
--- openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/WlsConversion.java (original)
+++ openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/WlsConversion.java Thu Dec 1 21:18:31 2011
@@ -16,75 +16,18 @@
*/
package org.apache.openejb.config;
-import org.apache.openejb.jee.sun.JaxbSun;
-import org.apache.openejb.jee.sun.SunEjbJar;
-import org.apache.openejb.jee.sun.SunCmpMappings;
-import org.apache.openejb.jee.sun.ResourceRef;
-import org.apache.openejb.jee.sun.ResourceEnvRef;
-import org.apache.openejb.jee.sun.MessageDestinationRef;
-import org.apache.openejb.jee.sun.PortInfo;
-import org.apache.openejb.jee.sun.StubProperty;
-import org.apache.openejb.jee.sun.SunCmpMapping;
-import org.apache.openejb.jee.sun.WebserviceEndpoint;
-import org.apache.openejb.jee.sun.Ejb;
-import org.apache.openejb.jee.sun.Cmp;
-import org.apache.openejb.jee.sun.OneOneFinders;
-import org.apache.openejb.jee.sun.Finder;
-import org.apache.openejb.jee.sun.EntityMapping;
-import org.apache.openejb.jee.sun.ColumnPair;
-import org.apache.openejb.jee.sun.CmpFieldMapping;
-import org.apache.openejb.jee.sun.ColumnName;
-import org.apache.openejb.jee.sun.CmrFieldMapping;
-import org.apache.openejb.jee.ServiceRef;
-import org.apache.openejb.jee.PortComponentRef;
-import org.apache.openejb.jee.WebserviceDescription;
-import org.apache.openejb.jee.PortComponent;
import org.apache.openejb.jee.EjbJar;
-import org.apache.openejb.jee.EnterpriseBean;
-import org.apache.openejb.jee.ServiceImplBean;
-import org.apache.openejb.jee.EntityBean;
-import org.apache.openejb.jee.PersistenceType;
-import org.apache.openejb.jee.CmpField;
+import org.apache.openejb.jee.jpa.EntityMappings;
+import org.apache.openejb.jee.oejb3.EjbDeployment;
+import org.apache.openejb.jee.oejb3.Jndi;
+import org.apache.openejb.jee.oejb3.OpenejbJar;
import org.apache.openejb.jee.wls.JaxbWls;
import org.apache.openejb.jee.wls.WeblogicEjbJar;
import org.apache.openejb.jee.wls.WeblogicEnterpriseBean;
-import org.apache.openejb.jee.oejb3.OpenejbJar;
-import org.apache.openejb.jee.oejb3.EjbDeployment;
-import org.apache.openejb.jee.oejb3.EjbLink;
-import org.apache.openejb.jee.oejb3.ResourceLink;
-import org.apache.openejb.jee.oejb3.Jndi;
-import org.apache.openejb.jee.jpa.EntityMappings;
-import org.apache.openejb.jee.jpa.Entity;
-import org.apache.openejb.jee.jpa.NamedQuery;
-import org.apache.openejb.jee.jpa.Table;
-import org.apache.openejb.jee.jpa.SecondaryTable;
-import org.apache.openejb.jee.jpa.PrimaryKeyJoinColumn;
-import org.apache.openejb.jee.jpa.Field;
-import org.apache.openejb.jee.jpa.Column;
-import org.apache.openejb.jee.jpa.RelationField;
-import org.apache.openejb.jee.jpa.OneToOne;
-import org.apache.openejb.jee.jpa.JoinColumn;
-import org.apache.openejb.jee.jpa.OneToMany;
-import org.apache.openejb.jee.jpa.ManyToOne;
-import org.apache.openejb.jee.jpa.JoinTable;
-import org.apache.openejb.jee.jpa.Id;
-import org.apache.openejb.jee.jpa.Attributes;
-import org.apache.openejb.jee.jpa.Basic;
-import org.apache.openejb.jee.jpa.AttributeOverride;
import javax.xml.bind.JAXBElement;
import java.io.ByteArrayInputStream;
import java.net.URL;
-import java.util.Map;
-import java.util.TreeMap;
-import java.util.HashMap;
-import java.util.Collection;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Collections;
-import java.util.StringTokenizer;
-import java.util.Arrays;
-import java.util.LinkedList;
public class WlsConversion implements DynamicDeployer {
public AppModule deploy(AppModule appModule) {
Modified: openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/util/Logger.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/util/Logger.java?rev=1209244&r1=1209243&r2=1209244&view=diff
==============================================================================
--- openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/util/Logger.java (original)
+++ openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/util/Logger.java Thu Dec 1 21:18:31 2011
@@ -57,15 +57,39 @@ public class Logger {
}
}
+ // slf4j
if (factory == null) {
try {
+ // ensure Log4j is in the CP
+ Logger.class.getClassLoader().loadClass("org.slf4j.LoggerFactory");
+
+ factory = new Slf4jLogStreamFactory();
+ } catch (NoClassDefFoundError e) {
+ // slf4j not in classpath
+ } catch (ClassNotFoundException cnfe) {
+ // idem
+ }
+ }
+
+ // Log4j is possible
+ if (factory == null) {
+ try {
+ // ensure Log4j is in the CP
+ Logger.class.getClassLoader().loadClass("org.apache.log4j.Layout");
+
factory = new Log4jLogStreamFactory();
} catch (NoClassDefFoundError e) {
//log4j not in classpath
- factory = new JuliLogStreamFactory();
+ } catch (ClassNotFoundException cnfe) {
+ // idem
}
}
+ // else JUL
+ if (factory == null) {
+ factory = new JuliLogStreamFactory();
+ }
+
logStreamFactory = factory;
}
Added: openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/util/classloader/MultipleClassLoader.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/util/classloader/MultipleClassLoader.java?rev=1209244&view=auto
==============================================================================
--- openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/util/classloader/MultipleClassLoader.java (added)
+++ openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/util/classloader/MultipleClassLoader.java Thu Dec 1 21:18:31 2011
@@ -0,0 +1,36 @@
+package org.apache.openejb.util.classloader;
+
+/**
+ * Simply to be able to get rid of the openwebbeans classloader stuff
+ * without patching it.
+ *
+ * @author rmannibucau
+ */
+public class MultipleClassLoader extends ClassLoader {
+ private final ClassLoader second;
+
+ public MultipleClassLoader(ClassLoader first, ClassLoader second) {
+ super(first);
+ this.second = second;
+ }
+
+ @Override public Class<?> loadClass(String name) throws ClassNotFoundException {
+ try {
+ return super.loadClass(name);
+ } catch (ClassNotFoundException cnfe) {
+ if (second != getParent()) {
+ return loadClassSecond(name);
+ }
+ throw cnfe;
+ } catch (NoClassDefFoundError ncdfe) {
+ if (second != getParent()) {
+ return loadClassSecond(name);
+ }
+ throw ncdfe;
+ }
+ }
+
+ public Class<?> loadClassSecond(String name) throws ClassNotFoundException {
+ return second.loadClass(name);
+ }
+}
Modified: openejb/trunk/openejb/container/openejb-loader/pom.xml
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-loader/pom.xml?rev=1209244&r1=1209243&r2=1209244&view=diff
==============================================================================
--- openejb/trunk/openejb/container/openejb-loader/pom.xml (original)
+++ openejb/trunk/openejb/container/openejb-loader/pom.xml Thu Dec 1 21:18:31 2011
@@ -31,10 +31,10 @@
<name>OpenEJB :: Container :: Loader</name>
<properties>
<openejb.osgi.import>
- !org.apache.geronimo,
+ org.apache.geronimo.*;resolution:=optional,
org.apache.catalina*;resolution:=optional,
!sun.misc.*,
- org.apache.openejb.*,
+ org.apache.openejb,
javax.transaction*;version=1.1,
*
</openejb.osgi.import>
Modified: openejb/trunk/openejb/container/openejb-osgi/pom.xml
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-osgi/pom.xml?rev=1209244&r1=1209243&r2=1209244&view=diff
==============================================================================
--- openejb/trunk/openejb/container/openejb-osgi/pom.xml (original)
+++ openejb/trunk/openejb/container/openejb-osgi/pom.xml Thu Dec 1 21:18:31 2011
@@ -67,7 +67,9 @@
javax.transaction;version="[1.1,1.2)",
javax.transaction.xa;version="[1.1,1.2)",
!org.apache.openejb.core.osgi.impl,
+ org.apache.openejb;version="[3.1,4.2)",
org.apache.openejb*;version="[3.1,4.2)",
+ org.apache.openejb.loader;version="[3.1,4.2)",
org.apache.openejb.core;version="[3.1,4.2)";resolution:=optional,
org.apache.openejb.core.stateless;version="[3.1,4.2)";resolution:=optional,
org.apache.openejb.core.stateful;version="[3.1,4.2)";resolution:=optional,
@@ -80,6 +82,9 @@
org.apache.openejb.resource.quartz;version="[3.1,4.2)";resolution:=optional,
org.apache.openejb.core.security;version="[3.1,4.2)",
org.apache.openejb.cdi;version="[3.1,4.2)",
+ org.apache.openejb.config;version="[3.1,4.2)",
+ org.apache.openejb.jee;version="[3.1,4.2)",
+ org.apache.openejb.util;version="[3.1,4.2)",
javax.naming,
org.apache.commons.logging,
org.apache.activemq.ra,
Modified: openejb/trunk/openejb/container/openejb-osgi/src/main/java/org/apache/openejb/core/osgi/impl/Activator.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-osgi/src/main/java/org/apache/openejb/core/osgi/impl/Activator.java?rev=1209244&r1=1209243&r2=1209244&view=diff
==============================================================================
--- openejb/trunk/openejb/container/openejb-osgi/src/main/java/org/apache/openejb/core/osgi/impl/Activator.java (original)
+++ openejb/trunk/openejb/container/openejb-osgi/src/main/java/org/apache/openejb/core/osgi/impl/Activator.java Thu Dec 1 21:18:31 2011
@@ -54,7 +54,12 @@ public class Activator implements Bundle
// OptionsLog.install();
// OpenEJB.init(env);
- openejb.init(env);
+ try {
+ openejb.init(env);
+ } catch (Exception e) {
+ LOGGER.error("can't start the bundle", e);
+ throw e;
+ }
LOGGER.info("Registering OSGified OpenEJB Deployer");
context.addBundleListener(new Deployer());