[jboss-cvs] JBossAS SVN: r58290 - in trunk/tomcat/src/main/org/jboss/web/tomcat/tc6: . deployers
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Mon Nov 13 03:40:44 EST 2006
Author: scott.stark at jboss.org
Date: 2006-11-13 03:40:39 -0500 (Mon, 13 Nov 2006)
New Revision: 58290
Modified:
trunk/tomcat/src/main/org/jboss/web/tomcat/tc6/WebAppClassLoader.java
trunk/tomcat/src/main/org/jboss/web/tomcat/tc6/WebAppLoader.java
trunk/tomcat/src/main/org/jboss/web/tomcat/tc6/WebCtxLoader.java
trunk/tomcat/src/main/org/jboss/web/tomcat/tc6/deployers/TomcatDeployment.java
Log:
Map the classpath to the expanded war
Modified: trunk/tomcat/src/main/org/jboss/web/tomcat/tc6/WebAppClassLoader.java
===================================================================
--- trunk/tomcat/src/main/org/jboss/web/tomcat/tc6/WebAppClassLoader.java 2006-11-13 04:20:54 UTC (rev 58289)
+++ trunk/tomcat/src/main/org/jboss/web/tomcat/tc6/WebAppClassLoader.java 2006-11-13 08:40:39 UTC (rev 58290)
@@ -21,6 +21,8 @@
*/
package org.jboss.web.tomcat.tc6;
+import java.net.URL;
+
import org.apache.catalina.loader.WebappClassLoader;
import org.jboss.logging.Logger;
@@ -57,6 +59,12 @@
this.filteredPackages = pkgs;
}
+ @Override
+ public void addURL(URL url)
+ {
+ super.addURL(url);
+ }
+
/**
* Overriden to filter out classes in the packages listed in the
* filteredPackages settings.
Modified: trunk/tomcat/src/main/org/jboss/web/tomcat/tc6/WebAppLoader.java
===================================================================
--- trunk/tomcat/src/main/org/jboss/web/tomcat/tc6/WebAppLoader.java 2006-11-13 04:20:54 UTC (rev 58289)
+++ trunk/tomcat/src/main/org/jboss/web/tomcat/tc6/WebAppLoader.java 2006-11-13 08:40:39 UTC (rev 58290)
@@ -21,6 +21,9 @@
*/
package org.jboss.web.tomcat.tc6;
+import java.net.URL;
+import java.util.List;
+
import org.apache.catalina.LifecycleException;
import org.apache.catalina.loader.WebappLoader;
import org.jboss.logging.Logger;
@@ -39,6 +42,7 @@
private String[] filteredPackages = {
"org.apache.commons.logging"
};
+ private List<URL> classpath;
private TomcatInjectionContainer injectionContainer;
@@ -61,6 +65,16 @@
}
/**
+ * Use an explicit classpath
+ *
+ * @param classpath
+ */
+ public void setClasspath(List<URL> classpath)
+ {
+ this.classpath = classpath;
+ }
+
+ /**
* Override to apply the filteredPackages to the jboss WebAppClassLoader
*
* @throws LifecycleException
@@ -73,6 +87,13 @@
{
WebAppClassLoader webLoader = (WebAppClassLoader) loader;
webLoader.setFilteredPackages(filteredPackages);
+ if( classpath != null )
+ {
+ for(URL url : classpath)
+ {
+ webLoader.addURL(url);
+ }
+ }
}
if (injectionContainer != null)
{
Modified: trunk/tomcat/src/main/org/jboss/web/tomcat/tc6/WebCtxLoader.java
===================================================================
--- trunk/tomcat/src/main/org/jboss/web/tomcat/tc6/WebCtxLoader.java 2006-11-13 04:20:54 UTC (rev 58289)
+++ trunk/tomcat/src/main/org/jboss/web/tomcat/tc6/WebCtxLoader.java 2006-11-13 08:40:39 UTC (rev 58290)
@@ -28,6 +28,7 @@
import java.net.URL;
import java.net.URLClassLoader;
import java.util.ArrayList;
+import java.util.List;
import javax.servlet.ServletContext;
@@ -93,6 +94,26 @@
injectionContainer = container;
}
+ /**
+ * Use an explicit classpath
+ *
+ * @param classpath
+ */
+ public void setClasspath(List<URL> classpath)
+ {
+ for(URL path : classpath)
+ {
+ delegate.addURL(path);
+ ctxLoader.addURLInternal(path);
+ }
+ }
+
+ /**
+ * Build the classpath from the war url WEB-INF/{classes,lib}.
+ *
+ * @param warURL
+ * @throws MalformedURLException
+ */
public void setWarURL(URL warURL) throws MalformedURLException
{
this.warURL = warURL;
Modified: trunk/tomcat/src/main/org/jboss/web/tomcat/tc6/deployers/TomcatDeployment.java
===================================================================
--- trunk/tomcat/src/main/org/jboss/web/tomcat/tc6/deployers/TomcatDeployment.java 2006-11-13 04:20:54 UTC (rev 58289)
+++ trunk/tomcat/src/main/org/jboss/web/tomcat/tc6/deployers/TomcatDeployment.java 2006-11-13 08:40:39 UTC (rev 58290)
@@ -29,9 +29,11 @@
import java.net.URL;
import java.security.CodeSource;
import java.security.cert.Certificate;
+import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
+import java.util.List;
import java.util.Set;
import java.util.zip.ZipEntry;
import java.util.zip.ZipFile;
@@ -42,11 +44,13 @@
import org.apache.catalina.Loader;
import org.apache.tomcat.util.modeler.Registry;
+import org.jboss.deployers.spi.deployer.DeploymentUnit;
import org.jboss.logging.Logger;
import org.jboss.metadata.WebMetaData;
import org.jboss.mx.util.MBeanServerLocator;
import org.jboss.security.AuthorizationManager;
import org.jboss.security.authorization.PolicyRegistration;
+import org.jboss.virtual.VirtualFile;
import org.jboss.web.WebApplication;
import org.jboss.web.deployers.AbstractWarDeployment;
import org.jboss.web.tomcat.security.JaccContextValve;
@@ -146,7 +150,10 @@
metaData.setContextLoader(loader);
// injectionContainer = new TomcatInjectionContainer(webAppParser, appInfo);
- Loader webLoader = getWebLoader(loader, url);
+ Loader webLoader = webApp.getDeploymentUnit().getAttachment(Loader.class);
+ if( webLoader == null )
+ webLoader = getWebLoader(webApp.getDeploymentUnit(), loader, url);
+
webApp.setName(url.getPath());
webApp.setClassLoader(loader);
webApp.setURL(url);
@@ -286,7 +293,8 @@
{
// Init the container; this will also start it
server.invoke(objectName, "init", new Object[] {}, new String[] {});
- } finally
+ }
+ finally
{
RunAsListener.metaDataLocal.set(null);
}
@@ -407,26 +415,29 @@
log.debug("Initialized: " + webApp + " " + objectName);
}
- public Loader getWebLoader(ClassLoader loader, URL url)
+ public Loader getWebLoader(DeploymentUnit unit, ClassLoader loader, URL url)
throws MalformedURLException
{
Loader webLoader = null;
+
/*
* If we are using the jboss class loader we need to augment its path to
* include the WEB-INF/{lib,classes} dirs or else scoped class loading
* does not see the war level overrides. The call to setWarURL adds these
* paths to the deployment UCL.
*/
-
+ ArrayList<URL> classpath = (ArrayList<URL>) unit.getAttachment("org.jboss.web.expandedWarClasspath");
if (config.isUseJBossWebLoader())
{
WebCtxLoader jbossLoader = new WebCtxLoader(loader/*
* ,
* injectionContainer
*/);
- jbossLoader.setWarURL(url);
+ if( classpath != null )
+ jbossLoader.setClasspath(classpath);
webLoader = jbossLoader;
- } else
+ }
+ else
{
String[] pkgs = config.getFilteredPackages();
WebAppLoader jbossLoader = new WebAppLoader(loader, pkgs/*
@@ -434,6 +445,8 @@
* injectionContainer
*/);
jbossLoader.setDelegate(getJava2ClassLoadingCompliance());
+ if( classpath != null )
+ jbossLoader.setClasspath(classpath);
webLoader = jbossLoader;
}
return webLoader;
More information about the jboss-cvs-commits
mailing list