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());