Author: rmannibucau
Date: Thu Jul 26 19:25:58 2012
New Revision: 1366163

URL: http://svn.apache.org/viewvc?rev=1366163&view=rev
Log:
TOMEE-TOMEE-147 using shared.classloader when here

Added:
    
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/core/ParentClassLoaderFinder.java
Modified:
    
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java
    
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/WebAppBuilder.java
    
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/DeploymentLoader.java
    
openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatDeploymentLoader.java
    
openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatLoader.java
    
openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatWebAppBuilder.java

Modified: 
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java?rev=1366163&r1=1366162&r2=1366163&view=diff
==============================================================================
--- 
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java
 (original)
+++ 
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java
 Thu Jul 26 19:25:58 2012
@@ -102,6 +102,7 @@ import org.apache.openejb.core.Connector
 import org.apache.openejb.core.CoreContainerSystem;
 import org.apache.openejb.core.CoreUserTransaction;
 import org.apache.openejb.core.JndiFactory;
+import org.apache.openejb.core.ParentClassLoaderFinder;
 import org.apache.openejb.core.SimpleTransactionSynchronizationRegistry;
 import org.apache.openejb.core.TransactionSynchronizationRegistryWrapper;
 import org.apache.openejb.core.WebContext;
@@ -1400,7 +1401,12 @@ public class Assembler extends Assembler
         }
 
         // Create the class loader
-        return ClassLoaderUtil.createClassLoader(appInfo.path, 
jars.toArray(new URL[jars.size()]), OpenEJB.class.getClassLoader());
+        ParentClassLoaderFinder parentFinder = 
SystemInstance.get().getComponent(ParentClassLoaderFinder.class);
+        ClassLoader parent = OpenEJB.class.getClassLoader();
+        if (parentFinder != null) {
+            parent = parentFinder.getParentClassLoader();
+        }
+        return ClassLoaderUtil.createClassLoader(appInfo.path, 
jars.toArray(new URL[jars.size()]), parent);
     }
 
     public void createExternalContext(JndiContextInfo contextInfo) throws 
OpenEJBException {

Modified: 
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/WebAppBuilder.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/WebAppBuilder.java?rev=1366163&r1=1366162&r2=1366163&view=diff
==============================================================================
--- 
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/WebAppBuilder.java
 (original)
+++ 
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/WebAppBuilder.java
 Thu Jul 26 19:25:58 2012
@@ -22,5 +22,5 @@ import java.util.Set;
 public interface WebAppBuilder {
     void deployWebApps(AppInfo appInfo, ClassLoader classLoader) throws 
Exception;
     void undeployWebApps(AppInfo appInfo) throws Exception;
-    public Map<ClassLoader, Map<String, Set<String>>> getJsfClasses();
+    Map<ClassLoader, Map<String, Set<String>>> getJsfClasses();
 }

Modified: 
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/DeploymentLoader.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/DeploymentLoader.java?rev=1366163&r1=1366162&r2=1366163&view=diff
==============================================================================
--- 
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/DeploymentLoader.java
 (original)
+++ 
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/DeploymentLoader.java
 Thu Jul 26 19:25:58 2012
@@ -23,6 +23,7 @@ import org.apache.openejb.api.LocalClien
 import org.apache.openejb.api.RemoteClient;
 import org.apache.openejb.config.event.BeforeDeploymentEvent;
 import org.apache.openejb.core.EmptyResourcesClassLoader;
+import org.apache.openejb.core.ParentClassLoaderFinder;
 import org.apache.openejb.jee.Application;
 import org.apache.openejb.jee.ApplicationClient;
 import org.apache.openejb.jee.Beans;
@@ -264,6 +265,10 @@ public class DeploymentLoader implements
     }
 
     protected ClassLoader getOpenEJBClassLoader(final URL url) {
+        final ParentClassLoaderFinder parentFinder = 
SystemInstance.get().getComponent(ParentClassLoaderFinder.class);
+        if (parentFinder != null) {
+            return  parentFinder.getParentClassLoader();
+        }
         return OpenEJB.class.getClassLoader();
     }
 

Added: 
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/core/ParentClassLoaderFinder.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/core/ParentClassLoaderFinder.java?rev=1366163&view=auto
==============================================================================
--- 
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/core/ParentClassLoaderFinder.java
 (added)
+++ 
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/core/ParentClassLoaderFinder.java
 Thu Jul 26 19:25:58 2012
@@ -0,0 +1,21 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.openejb.core;
+
+public interface ParentClassLoaderFinder {
+    ClassLoader getParentClassLoader();
+}

Modified: 
openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatDeploymentLoader.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatDeploymentLoader.java?rev=1366163&r1=1366162&r2=1366163&view=diff
==============================================================================
--- 
openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatDeploymentLoader.java
 (original)
+++ 
openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatDeploymentLoader.java
 Thu Jul 26 19:25:58 2012
@@ -19,9 +19,12 @@ package org.apache.tomee.catalina;
 
 import org.apache.catalina.core.StandardContext;
 import org.apache.openejb.OpenEJBException;
+import org.apache.openejb.assembler.classic.WebAppBuilder;
 import org.apache.openejb.config.AppModule;
 import org.apache.openejb.config.DeploymentLoader;
 import org.apache.openejb.config.DeploymentModule;
+import org.apache.openejb.core.ParentClassLoaderFinder;
+import org.apache.openejb.loader.SystemInstance;
 
 import java.net.URL;
 import java.util.Set;
@@ -47,5 +50,4 @@ public class TomcatDeploymentLoader exte
     protected String getModuleName() {
         return moduleId;
     }
-
 }

Modified: 
openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatLoader.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatLoader.java?rev=1366163&r1=1366162&r2=1366163&view=diff
==============================================================================
--- 
openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatLoader.java
 (original)
+++ 
openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatLoader.java
 Thu Jul 26 19:25:58 2012
@@ -28,11 +28,11 @@ import org.apache.catalina.core.Standard
 import org.apache.catalina.startup.Bootstrap;
 import org.apache.catalina.startup.Catalina;
 import org.apache.openejb.OpenEJB;
-import org.apache.openejb.assembler.classic.Assembler;
 import org.apache.openejb.assembler.classic.OpenEjbConfiguration;
 import org.apache.openejb.assembler.classic.WebAppBuilder;
 import org.apache.openejb.config.NewLoaderLogic;
 import org.apache.openejb.config.sys.Tomee;
+import org.apache.openejb.core.ParentClassLoaderFinder;
 import org.apache.openejb.core.ServerFederation;
 import org.apache.openejb.core.ThreadContext;
 import org.apache.openejb.loader.IO;
@@ -202,6 +202,7 @@ public class TomcatLoader implements Loa
             tomcatWebAppBuilder.start();
             SystemInstance.get().setComponent(WebAppBuilder.class, 
tomcatWebAppBuilder);
         }
+        SystemInstance.get().setComponent(ParentClassLoaderFinder.class, 
tomcatWebAppBuilder);
 
         // for compatibility purpose, no more used normally by our trunk
         SystemInstance.get().setComponent(WebDeploymentListeners.class, new 
WebDeploymentListeners());

Modified: 
openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatWebAppBuilder.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatWebAppBuilder.java?rev=1366163&r1=1366162&r2=1366163&view=diff
==============================================================================
--- 
openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatWebAppBuilder.java
 (original)
+++ 
openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatWebAppBuilder.java
 Thu Jul 26 19:25:58 2012
@@ -74,6 +74,7 @@ import org.apache.openejb.config.event.B
 import org.apache.openejb.core.CoreContainerSystem;
 import org.apache.openejb.core.WebContext;
 import org.apache.openejb.core.ivm.naming.SystemComponentReference;
+import org.apache.openejb.core.ParentClassLoaderFinder;
 import org.apache.openejb.jee.EnvEntry;
 import org.apache.openejb.jee.WebApp;
 import org.apache.openejb.loader.IO;
@@ -129,7 +130,7 @@ import static org.apache.tomee.catalina.
  *
  * @version $Rev$ $Date$
  */
-public class TomcatWebAppBuilder implements WebAppBuilder, ContextListener {
+public class TomcatWebAppBuilder implements WebAppBuilder, ContextListener, 
ParentClassLoaderFinder {
     public static final String OPENEJB_CROSSCONTEXT_PROPERTY = 
"openejb.crosscontext";
     public static final String OPENEJB_SESSION_MANAGER_PROPERTY = 
"openejb.session.manager";
     public static final String OPENEJB_JSESSION_ID_SUPPORT = 
"openejb.jsessionid-support";
@@ -194,6 +195,8 @@ public class TomcatWebAppBuilder impleme
 
     private Set<CatalinaCluster> clusters = new HashSet<CatalinaCluster>();
 
+    private ClassLoader parentClassLoader;
+
     /**
      * Creates a new web application builder
      * instance.
@@ -211,9 +214,13 @@ public class TomcatWebAppBuilder impleme
         for (final Service service : standardServer.findServices()) {
             if (service.getContainer() instanceof Engine) {
                 final Engine engine = (Engine) service.getContainer();
+
+                parentClassLoader = engine.getParentClassLoader();
+
                 manageCluster(engine.getCluster());
                 defaultHost = engine.getDefaultHost();
                 addTomEERealm(engine);
+
                 for (final Container engineChild : engine.findChildren()) {
                     if (engineChild instanceof StandardHost) {
                         final StandardHost host = (StandardHost) engineChild;
@@ -1653,4 +1660,8 @@ public class TomcatWebAppBuilder impleme
     public Map<ClassLoader, Map<String, Set<String>>> getJsfClasses() {
         return jsfClasses;
     }
+
+    public ClassLoader getParentClassLoader() {
+        return parentClassLoader;
+    }
 }


Reply via email to