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;
+ }
}