You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by re...@apache.org on 2001/01/23 06:05:52 UTC
cvs commit: jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/startup Bootstrap.java Catalina.java ContextConfig.java
remm 01/01/22 21:05:52
Modified: catalina/src/conf server.xml
catalina/src/share/org/apache/catalina Container.java
catalina/src/share/org/apache/catalina/core
ApplicationContext.java ContainerBase.java
StandardContext.java StandardHost.java
catalina/src/share/org/apache/catalina/loader
StandardClassLoader.java StandardLoader.java
catalina/src/share/org/apache/catalina/startup
Bootstrap.java Catalina.java ContextConfig.java
Removed: catalina/src/share/org/apache/catalina Resources.java
catalina/src/share/org/apache/catalina/resources
Constants.java DirectoryBean.java
FileResources.java JarResources.java
LocalStrings.properties LocalStrings_es.properties
ResourceBean.java ResourcesBase.java package.html
Log:
- Complete the backport from 4.1.
- Note : I noticed while merging that I had forgotten to update the TLD
loading in ContextConfig (right now, it will only work from the filesystem; I've
added that on my TODO list.
Revision Changes Path
1.17 +5 -3 jakarta-tomcat-4.0/catalina/src/conf/server.xml
Index: server.xml
===================================================================
RCS file: /home/cvs/jakarta-tomcat-4.0/catalina/src/conf/server.xml,v
retrieving revision 1.16
retrieving revision 1.17
diff -u -r1.16 -r1.17
--- server.xml 2000/12/17 01:03:29 1.16
+++ server.xml 2001/01/23 05:05:41 1.17
@@ -45,7 +45,9 @@
<!-- Define a non-SSL HTTP/1.1 Connector on port 8080 -->
<Connector className="org.apache.catalina.connector.http.HttpConnector"
port="8080" minProcessors="5" maxProcessors="75"
- acceptCount="10" debug="0"/>
+ acceptCount="10" debug="0" connectionTimeout="60000"/>
+ <!-- Note : To disable connection timeouts, set connectionTimeout value
+ to -1 -->
<!-- Define an SSL HTTP/1.1 Connector on port 8443 -->
<!--
@@ -59,7 +61,7 @@
<!-- Define a non-SSL HTTP/1.0 Test Connector on port 8081 -->
<!--
- <Connector className="org.apache.catalina.connector.test.HttpConnector"
+ <Connector className="org.apache.catalina.connector.http10.HttpConnector"
port="8081" minProcessors="5" maxProcessors="75"
acceptCount="10" debug="0"/>
-->
@@ -127,7 +129,7 @@
-->
<!-- Define the default virtual host -->
- <Host name="localhost" debug="0" appBase="webapps">
+ <Host name="localhost" debug="0" appBase="webapps" unpackWARs="true">
<!-- Normally, users must authenticate themselves to each web app
individually. Uncomment the following entry if you would like
1.3 +11 -10 jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/Container.java
Index: Container.java
===================================================================
RCS file: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/Container.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- Container.java 2000/09/30 19:15:42 1.2
+++ Container.java 2001/01/23 05:05:44 1.3
@@ -1,7 +1,7 @@
/*
- * $Header: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/Container.java,v 1.2 2000/09/30 19:15:42 craigmcc Exp $
- * $Revision: 1.2 $
- * $Date: 2000/09/30 19:15:42 $
+ * $Header: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/Container.java,v 1.3 2001/01/23 05:05:44 remm Exp $
+ * $Revision: 1.3 $
+ * $Date: 2001/01/23 05:05:44 $
*
* ====================================================================
*
@@ -68,6 +68,7 @@
import java.beans.PropertyChangeListener;
import java.io.IOException;
import javax.servlet.ServletException;
+import javax.naming.directory.DirContext;
/**
@@ -112,14 +113,14 @@
* this Container.
* <li><b>Realm</b> - Read-only interface to a security domain, for
* authenticating user identities and their corresponding roles.
- * <li><b>Resources</b> - Implementation of the resource access method
- * signatures of the <code>ServletContext</code> interface, enabling
- * custom linkages to existing server components when Catalina is embedded
- * in a larger server.
+ * <li><b>Resources</b> - JNDI directory context enabling access to static
+ * resources, enabling custom linkages to existing server components when
+ * Catalina is embedded in a larger server.
* </ul>
*
* @author Craig R. McClanahan
- * @version $Revision: 1.2 $ $Date: 2000/09/30 19:15:42 $
+ * @author Remy Maucherat
+ * @version $Revision: 1.3 $ $Date: 2001/01/23 05:05:44 $
*/
public interface Container {
@@ -310,7 +311,7 @@
* is no associated Resources object, return the Resources associated with
* our parent Container (if any); otherwise return <code>null</code>.
*/
- public Resources getResources();
+ public DirContext getResources();
/**
@@ -318,7 +319,7 @@
*
* @param resources The newly associated Resources
*/
- public void setResources(Resources resources);
+ public void setResources(DirContext resources);
// --------------------------------------------------------- Public Methods
1.10 +46 -23 jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/core/ApplicationContext.java
Index: ApplicationContext.java
===================================================================
RCS file: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/core/ApplicationContext.java,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -r1.9 -r1.10
--- ApplicationContext.java 2001/01/03 00:17:06 1.9
+++ ApplicationContext.java 2001/01/23 05:05:46 1.10
@@ -1,7 +1,7 @@
/*
- * $Header: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/core/ApplicationContext.java,v 1.9 2001/01/03 00:17:06 craigmcc Exp $
- * $Revision: 1.9 $
- * $Date: 2001/01/03 00:17:06 $
+ * $Header: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/core/ApplicationContext.java,v 1.10 2001/01/23 05:05:46 remm Exp $
+ * $Revision: 1.10 $
+ * $Date: 2001/01/23 05:05:46 $
*
* ====================================================================
*
@@ -66,6 +66,7 @@
import java.io.InputStream;
+import java.io.File;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.ArrayList;
@@ -74,18 +75,21 @@
import java.util.HashMap;
import java.util.HashSet;
import java.util.Set;
+import javax.naming.directory.DirContext;
import javax.servlet.RequestDispatcher;
import javax.servlet.Servlet;
import javax.servlet.ServletContext;
import javax.servlet.ServletContextAttributeEvent;
import javax.servlet.ServletContextAttributesListener;
import javax.servlet.http.HttpServletRequest;
+import org.apache.naming.resources.Resource;
+import org.apache.naming.resources.DirContextURLStreamHandler;
+import org.apache.naming.resources.DirContextURLConnection;
import org.apache.catalina.Container;
import org.apache.catalina.Context;
import org.apache.catalina.Globals;
import org.apache.catalina.Host;
import org.apache.catalina.Logger;
-import org.apache.catalina.Resources;
import org.apache.catalina.Wrapper;
import org.apache.catalina.connector.HttpRequestBase;
import org.apache.catalina.deploy.ApplicationParameter;
@@ -100,7 +104,8 @@
* associated with each instance of <code>StandardContext</code>.
*
* @author Craig R. McClanahan
- * @version $Revision: 1.9 $ $Date: 2001/01/03 00:17:06 $
+ * @author Remy Maucherat
+ * @version $Revision: 1.10 $ $Date: 2001/01/23 05:05:46 $
*/
public final class ApplicationContext
@@ -116,10 +121,11 @@
*
* @param context The associated Context instance
*/
- public ApplicationContext(StandardContext context) {
+ public ApplicationContext(String basePath, StandardContext context) {
super();
this.context = context;
+ this.basePath = basePath;
}
@@ -159,6 +165,12 @@
StringManager.getManager(Constants.Package);
+ /**
+ * Base path.
+ */
+ private String basePath = null;
+
+
// --------------------------------------------------------- Public Methods
@@ -167,7 +179,7 @@
* The path must begin with a "/" and is interpreted as relative to the
* current context root.
*/
- public Resources getResources() {
+ public DirContext getResources() {
return context.getResources();
@@ -303,11 +315,15 @@
*/
public String getMimeType(String file) {
- Resources resources = context.getResources();
- if (resources == null)
+ if (file == null)
return (null);
- else
- return (resources.getMimeType(file));
+ int period = file.lastIndexOf(".");
+ if (period < 0)
+ return (null);
+ String extension = file.substring(period + 1);
+ if (extension.length() < 1)
+ return (null);
+ return (context.findMimeMapping(extension));
}
@@ -343,11 +359,9 @@
*/
public String getRealPath(String path) {
- Resources resources = context.getResources();
- if (resources == null)
- return (null);
- else
- return (resources.getRealPath(path));
+ // Here, we return a fake path
+ File file = new File(basePath, path);
+ return (file.getAbsolutePath());
}
@@ -415,11 +429,12 @@
*/
public URL getResource(String path) throws MalformedURLException {
- Resources resources = context.getResources();
+ DirContext resources = context.getResources();
if (resources == null)
return (null);
else
- return (resources.getResource(path));
+ return new URL("jndi", null, 0, path,
+ new DirContextURLStreamHandler(resources));
}
@@ -434,11 +449,16 @@
*/
public InputStream getResourceAsStream(String path) {
- Resources resources = context.getResources();
- if (resources == null)
- return (null);
- else
- return (resources.getResourceAsStream(path));
+ DirContext resources = context.getResources();
+ if (resources != null) {
+ try {
+ Object resource = resources.lookup(path);
+ if (resource instanceof Resource)
+ return (((Resource) resource).streamContent());
+ } catch (Exception e) {
+ }
+ }
+ return (null);
}
@@ -451,6 +471,8 @@
public Set getResourcePaths() {
ResourceSet set = new ResourceSet();
+ // FIXME !
+ /*
Resources resources = context.getResources();
if (resources == null) {
set.setLocked(true);
@@ -461,6 +483,7 @@
paths = new String[0];
for (int i = 0; i < paths.length; i++)
set.add(paths[i]);
+ */
set.setLocked(true);
return (set);
1.8 +20 -40 jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/core/ContainerBase.java
Index: ContainerBase.java
===================================================================
RCS file: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/core/ContainerBase.java,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -r1.7 -r1.8
--- ContainerBase.java 2001/01/23 02:51:14 1.7
+++ ContainerBase.java 2001/01/23 05:05:46 1.8
@@ -1,7 +1,7 @@
/*
- * $Header: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/core/ContainerBase.java,v 1.7 2001/01/23 02:51:14 craigmcc Exp $
- * $Revision: 1.7 $
- * $Date: 2001/01/23 02:51:14 $
+ * $Header: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/core/ContainerBase.java,v 1.8 2001/01/23 05:05:46 remm Exp $
+ * $Revision: 1.8 $
+ * $Date: 2001/01/23 05:05:46 $
*
* ====================================================================
*
@@ -70,8 +70,11 @@
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
+import java.util.Hashtable;
import java.util.Iterator;
import javax.servlet.ServletException;
+import javax.naming.directory.DirContext;
+import org.apache.naming.resources.ProxyDirContext;
import org.apache.catalina.Container;
import org.apache.catalina.ContainerEvent;
import org.apache.catalina.ContainerListener;
@@ -86,7 +89,6 @@
import org.apache.catalina.Pipeline;
import org.apache.catalina.Realm;
import org.apache.catalina.Request;
-import org.apache.catalina.Resources;
import org.apache.catalina.Response;
import org.apache.catalina.Valve;
import org.apache.catalina.util.LifecycleSupport;
@@ -151,7 +153,7 @@
* class comments of the implementation class.
*
* @author Craig R. McClanahan
- * @version $Revision: 1.7 $ $Date: 2001/01/23 02:51:14 $
+ * @version $Revision: 1.8 $ $Date: 2001/01/23 05:05:46 $
*/
public abstract class ContainerBase
@@ -252,9 +254,9 @@
/**
- * The Resources object with which this Container is associated.
+ * The resources DirContext object with which this Container is associated.
*/
- protected Resources resources = null;
+ protected DirContext resources = null;
/**
@@ -650,11 +652,12 @@
/**
- * Return the Resources with which this Container is associated. If there
- * is no associated Resources object, return the Resources associated with
- * our parent Container (if any); otherwise return <code>null</code>.
+ * Return the resources DirContext object with which this Container is
+ * associated. If there is no associated resources object, return the
+ * resources associated with our parent Container (if any); otherwise
+ * return <code>null</code>.
*/
- public Resources getResources() {
+ public DirContext getResources() {
if (resources != null)
return (resources);
@@ -666,41 +669,18 @@
/**
- * Set the Resources object with which this Container is associated.
+ * Set the resources DirContext object with which this Container is
+ * associated.
*
- * @param resources The newly associated Resources
+ * @param resources The newly associated DirContext
*/
- public synchronized void setResources(Resources resources) {
+ public synchronized void setResources(DirContext resources) {
// Change components if necessary
- Resources oldResources = this.resources;
+ DirContext oldResources = this.resources;
if (oldResources == resources)
return;
- this.resources = resources;
-
- // Stop the old component if necessary
- if (started && (oldResources != null) &&
- (oldResources instanceof Lifecycle)) {
- try {
- ((Lifecycle) oldResources).stop();
- } catch (LifecycleException e) {
- log("ContainerBase.setResources: stop: ", e);
- }
- }
- if (oldResources != null)
- oldResources.setContainer(null);
-
- // Start the new component if necessary
- if (resources != null)
- resources.setContainer(this);
- if (started && (resources != null) &&
- (resources instanceof Lifecycle)) {
- try {
- ((Lifecycle) resources).start();
- } catch (LifecycleException e) {
- log("ContainerBase.setResources: start: ", e);
- }
- }
+ this.resources = new ProxyDirContext(new Hashtable(), resources);
// Report this property change to interested listeners
support.firePropertyChange("resources", oldResources, this.resources);
1.35 +93 -9 jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/core/StandardContext.java
Index: StandardContext.java
===================================================================
RCS file: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/core/StandardContext.java,v
retrieving revision 1.34
retrieving revision 1.35
diff -u -r1.34 -r1.35
--- StandardContext.java 2001/01/23 02:51:14 1.34
+++ StandardContext.java 2001/01/23 05:05:46 1.35
@@ -1,13 +1,13 @@
/*
- * $Header: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/core/StandardContext.java,v 1.34 2001/01/23 02:51:14 craigmcc Exp $
- * $Revision: 1.34 $
- * $Date: 2001/01/23 02:51:14 $
+ * $Header: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/core/StandardContext.java,v 1.35 2001/01/23 05:05:46 remm Exp $
+ * $Revision: 1.35 $
+ * $Date: 2001/01/23 05:05:46 $
*
* ====================================================================
*
* The Apache Software License, Version 1.1
*
- * Copyright (c) 1999-2001 The Apache Software Foundation. All rights
+ * Copyright (c) 1999 The Apache Software Foundation. All rights
* reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -88,6 +88,7 @@
import javax.naming.NamingEnumeration;
import javax.naming.Binding;
import javax.naming.StringRefAddr;
+import javax.naming.directory.DirContext;
import org.apache.naming.NamingContext;
import org.apache.naming.ContextBindings;
import org.apache.naming.ContextAccessController;
@@ -95,9 +96,13 @@
import org.apache.naming.ResourceRef;
import org.apache.naming.ResourceEnvRef;
import org.apache.naming.TransactionRef;
+import org.apache.naming.resources.FileDirContext;
+import org.apache.naming.resources.WARDirContext;
+import org.apache.naming.resources.BaseDirContext;
import org.apache.catalina.Container;
import org.apache.catalina.ContainerListener;
import org.apache.catalina.Context;
+import org.apache.catalina.Host;
import org.apache.catalina.Globals;
import org.apache.catalina.HttpRequest;
import org.apache.catalina.InstanceListener;
@@ -120,7 +125,6 @@
import org.apache.catalina.deploy.SecurityCollection;
import org.apache.catalina.deploy.SecurityConstraint;
import org.apache.catalina.loader.StandardLoader;
-import org.apache.catalina.resources.FileResources;
import org.apache.catalina.session.StandardManager;
import org.apache.catalina.util.CharsetMapper;
import org.apache.catalina.util.RequestUtil;
@@ -133,7 +137,7 @@
*
* @author Craig R. McClanahan
* @author Remy Maucherat
- * @version $Revision: 1.34 $ $Date: 2001/01/23 02:51:14 $
+ * @version $Revision: 1.35 $ $Date: 2001/01/23 05:05:46 $
*/
public class StandardContext
@@ -842,7 +846,7 @@
public synchronized ServletContext getServletContext() {
if (context == null)
- context = new ApplicationContext(this);
+ context = new ApplicationContext(getBasePath(), this);
return (context);
}
@@ -900,6 +904,27 @@
}
+ /**
+ * Set the resources DirContext object with which this Container is
+ * associated.
+ *
+ * @param resources The newly associated DirContext
+ */
+ public synchronized void setResources(DirContext resources) {
+
+ if (resources instanceof BaseDirContext) {
+ if (resources instanceof BaseDirContext)
+ ((BaseDirContext) resources).setDocBase(getBasePath());
+ }
+ super.setResources(resources);
+ if (started)
+ // We put the resources into the servlet context
+ getServletContext().setAttribute
+ (Globals.RESOURCES_ATTR, getResources());
+
+ }
+
+
// ------------------------------------------------------ Public Properties
@@ -2887,7 +2912,10 @@
if (getResources() == null) { // (1) Required by Loader
if (debug >= 1)
log("Configuring default Resources");
- setResources(new FileResources());
+ if ((docBase != null) && (docBase.endsWith(".war")))
+ setResources(new WARDirContext());
+ else
+ setResources(new FileDirContext());
}
if (getLoader() == null) { // (2) Required by Manager
if (debug >= 1)
@@ -2900,6 +2928,9 @@
setManager(new StandardManager());
}
+ // Post work directory
+ postWorkDirectory();
+
// Standard container startup
if (debug >= 1)
log("Processing standard container startup");
@@ -2925,6 +2956,10 @@
}
}
+ // We put the resources into the servlet context
+ getServletContext().setAttribute
+ (Globals.RESOURCES_ATTR, getResources());
+
// Configure and call application event listeners and filters
listenerStart();
filterStart();
@@ -2933,7 +2968,6 @@
if (debug >= 1)
log("Posting standard context attributes");
postWelcomeFiles();
- postWorkDirectory();
// Reload sessions from persistent storage if supported
try {
@@ -3100,10 +3134,51 @@
}
+ /**
+ * Return a File object representing the base directory for the
+ * entire servlet container (i.e. the Engine container if present).
+ */
+ protected File engineBase() {
+
+ return (new File(System.getProperty("catalina.home")));
+
+ }
+
+
// -------------------------------------------------------- Private Methods
/**
+ * Get base path.
+ */
+ private String getBasePath() {
+ String docBase = null;
+ Container container = this;
+ while (container != null) {
+ if (container instanceof Host)
+ break;
+ container = container.getParent();
+ }
+ if (container == null) {
+ docBase = (new File(engineBase(), getDocBase())).getPath();
+ } else {
+ File file = new File(getDocBase());
+ if (!file.isAbsolute()) {
+ // Use the "appBase" property of this container
+ String appBase = ((Host) container).getAppBase();
+ file = new File(appBase);
+ if (!file.isAbsolute())
+ file = new File(engineBase(), appBase);
+ docBase = (new File(file, getDocBase())).getPath();
+ } else {
+ docBase = file.getPath();
+ }
+ }
+ return docBase;
+ }
+
+
+ /**
* Create and initialize the JNDI naming context.
*/
private void createNamingContext()
@@ -3236,9 +3311,18 @@
try {
Reference ref = new TransactionRef();
compCtx.bind("UserTransaction", ref);
+ addAdditionalParameters(ref, "UserTransaction");
+ } catch (NamingException e) {
+ log(sm.getString("standardContext.bindFailed", e));
+ }
+
+ // Binding the resources directory context
+ try {
+ compCtx.bind("Resources", getResources());
} catch (NamingException e) {
log(sm.getString("standardContext.bindFailed", e));
}
+
// Setting the context in read only mode
ContextAccessController.setReadOnly(getName());
1.8 +65 -22 jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/core/StandardHost.java
Index: StandardHost.java
===================================================================
RCS file: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/core/StandardHost.java,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -r1.7 -r1.8
--- StandardHost.java 2001/01/23 02:51:15 1.7
+++ StandardHost.java 2001/01/23 05:05:47 1.8
@@ -1,13 +1,13 @@
/*
- * $Header: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/core/StandardHost.java,v 1.7 2001/01/23 02:51:15 craigmcc Exp $
- * $Revision: 1.7 $
- * $Date: 2001/01/23 02:51:15 $
+ * $Header: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/core/StandardHost.java,v 1.8 2001/01/23 05:05:47 remm Exp $
+ * $Revision: 1.8 $
+ * $Date: 2001/01/23 05:05:47 $
*
* ====================================================================
*
* The Apache Software License, Version 1.1
*
- * Copyright (c) 1999-2001 The Apache Software Foundation. All rights
+ * Copyright (c) 1999 The Apache Software Foundation. All rights
* reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -97,7 +97,7 @@
* requests directed to a particular web application.
*
* @author Craig R. McClanahan
- * @version $Revision: 1.7 $ $Date: 2001/01/23 02:51:15 $
+ * @version $Revision: 1.8 $ $Date: 2001/01/23 05:05:47 $
*/
public class StandardHost
@@ -173,6 +173,12 @@
"org.apache.catalina.core.StandardHostMapper";
+ /**
+ * Unpack WARs property.
+ */
+ private boolean unpackWARs = true;
+
+
// ------------------------------------------------------------- Properties
@@ -290,6 +296,26 @@
}
+ /**
+ * Unpack WARs flag accessor.
+ */
+ public boolean isUnpackWARs() {
+
+ return (unpackWARs);
+
+ }
+
+
+ /**
+ * Unpack WARs flag mutator.
+ */
+ public void setUnpackWARs(boolean unpackWARs) {
+
+ this.unpackWARs = unpackWARs;
+
+ }
+
+
// --------------------------------------------------------- Public Methods
@@ -513,22 +539,39 @@
log(sm.getString("standardHost.deploying", contextPath, url));
// Expand a WAR archive into an unpacked directory if needed
- if (url.startsWith("jar:"))
- docBase = expand(war);
- else if (url.startsWith("file://"))
- docBase = url.substring(7);
- else if (url.startsWith("file:"))
- docBase = url.substring(5);
- else
- throw new IllegalArgumentException
- (sm.getString("standardHost.warURL", url));
-
- // Make sure the document base directory exists and is readable
- File docBaseDir = new File(docBase);
- if (!docBaseDir.exists() || !docBaseDir.isDirectory() ||
- !docBaseDir.canRead())
- throw new IllegalArgumentException
- (sm.getString("standardHost.accessBase", docBase));
+ if (isUnpackWARs()) {
+
+ if (url.startsWith("jar:"))
+ docBase = expand(war);
+ else if (url.startsWith("file://"))
+ docBase = url.substring(7);
+ else if (url.startsWith("file:"))
+ docBase = url.substring(5);
+ else
+ throw new IllegalArgumentException
+ (sm.getString("standardHost.warURL", url));
+
+ // Make sure the document base directory exists and is readable
+ File docBaseDir = new File(docBase);
+ if (!docBaseDir.exists() || !docBaseDir.isDirectory() ||
+ !docBaseDir.canRead())
+ throw new IllegalArgumentException
+ (sm.getString("standardHost.accessBase", docBase));
+
+ } else {
+
+ if (url.startsWith("jar:")) {
+ url = url.substring(4, url.length() - 2);
+ }
+ if (url.startsWith("file://"))
+ docBase = url.substring(7);
+ else if (url.startsWith("file:"))
+ docBase = url.substring(5);
+ else
+ throw new IllegalArgumentException
+ (sm.getString("standardHost.warURL", url));
+
+ }
// Deploy this new web application
try {
@@ -544,7 +587,7 @@
}
addChild(context);
fireContainerEvent(DEPLOY_EVENT, context);
- if (url.startsWith("jar:")) {
+ if (isUnpackWARs() && (url.startsWith("jar:"))) {
synchronized (expanded) {
if (debug >= 1)
log("Recording expanded app at path " + contextPath);
1.7 +129 -19 jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/loader/StandardClassLoader.java
Index: StandardClassLoader.java
===================================================================
RCS file: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/loader/StandardClassLoader.java,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -r1.6 -r1.7
--- StandardClassLoader.java 2001/01/17 15:33:46 1.6
+++ StandardClassLoader.java 2001/01/23 05:05:48 1.7
@@ -1,7 +1,7 @@
/*
- * $Header: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/loader/StandardClassLoader.java,v 1.6 2001/01/17 15:33:46 remm Exp $
- * $Revision: 1.6 $
- * $Date: 2001/01/17 15:33:46 $
+ * $Header: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/loader/StandardClassLoader.java,v 1.7 2001/01/23 05:05:48 remm Exp $
+ * $Revision: 1.7 $
+ * $Date: 2001/01/23 05:05:48 $
*
* ====================================================================
*
@@ -71,11 +71,16 @@
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLClassLoader;
+import java.net.URLConnection;
+import java.net.URLStreamHandlerFactory;
+import java.net.URLStreamHandler;
import java.util.ArrayList;
import java.util.Enumeration;
import java.util.HashMap;
import java.util.Iterator;
import java.util.jar.JarFile;
+import java.util.jar.JarEntry;
+import java.util.jar.JarInputStream;
import java.util.jar.Manifest;
@@ -99,7 +104,8 @@
* independently.
*
* @author Craig R. McClanahan
- * @version $Revision: 1.6 $ $Date: 2001/01/17 15:33:46 $
+ * @author Remy Maucherat
+ * @version $Revision: 1.7 $ $Date: 2001/01/23 05:05:48 $
*/
public class StandardClassLoader
@@ -122,6 +128,20 @@
/**
+ * Construct a new ClassLoader with no defined repositories and no
+ * parent ClassLoader, but with a stream handler factory.
+ *
+ * @param factory the URLStreamHandlerFactory to use when creating URLs
+ */
+ public StandardClassLoader(URLStreamHandlerFactory factory) {
+
+ super(new URL[0], null, factory);
+ this.factory = factory;
+
+ }
+
+
+ /**
* Construct a new ClassLoader with no defined repositories and the
* specified parent ClassLoader.
*
@@ -135,6 +155,22 @@
/**
+ * Construct a new ClassLoader with no defined repositories and the
+ * specified parent ClassLoader.
+ *
+ * @param parent The parent ClassLoader
+ * @param factory the URLStreamHandlerFactory to use when creating URLs
+ */
+ public StandardClassLoader(ClassLoader parent,
+ URLStreamHandlerFactory factory) {
+
+ super((new URL[0]), parent, factory);
+ this.factory = factory;
+
+ }
+
+
+ /**
* Construct a new ClassLoader with the specified repositories and
* no parent ClassLoader.
*
@@ -263,6 +299,12 @@
protected String systems[] = { "java." };
+ /**
+ * URL stream handler for additional protocols.
+ */
+ protected URLStreamHandlerFactory factory = null;
+
+
// ------------------------------------------------------------- Properties
@@ -352,7 +394,12 @@
// Add this repository to our underlying class loader
try {
- super.addURL(new URL(repository));
+ URLStreamHandler streamHandler = null;
+ String protocol = parseProtocol(repository);
+ if (factory != null)
+ streamHandler = factory.createURLStreamHandler(protocol);
+ URL url = new URL(null, repository, streamHandler);
+ super.addURL(url);
} catch (MalformedURLException e) {
throw new IllegalArgumentException(e.toString());
}
@@ -553,14 +600,27 @@
// Check for modifications to any of these classes
for (int i = 0; i < entries.length; i++) {
- if (!(entries[i].origin instanceof File))
- continue;
- File origin = (File) entries[i].origin;
- if (entries[i].lastModified != origin.lastModified()) {
- if (debug >= 2)
- log(" Class '" + entries[i].loadedClass.getName() +
- "' was modified");
- return (true);
+ if (entries[i].origin instanceof File) {
+ File origin = (File) entries[i].origin;
+ if (entries[i].lastModified != origin.lastModified()) {
+ if (debug >= 2)
+ log(" Class '" + entries[i].loadedClass.getName() +
+ "' was modified");
+ return (true);
+ }
+ } else if (entries[i].origin instanceof URL) {
+ try {
+ URL url = (URL) entries[i].origin;
+ URLConnection urlConn = url.openConnection();
+ if (entries[i].lastModified != urlConn.getLastModified()) {
+ if (debug >= 2)
+ log(" Class '"
+ + entries[i].loadedClass.getName()
+ + "' was modified");
+ return (true);
+ }
+ } catch (IOException e) {
+ }
}
}
@@ -1028,6 +1088,21 @@
/**
+ * Parse URL protocol.
+ *
+ * @return String protocol
+ */
+ protected static String parseProtocol(String spec) {
+ if (spec == null)
+ return "";
+ int pos = spec.indexOf(':');
+ if (pos <= 0)
+ return "";
+ return spec.substring(0, pos).trim();
+ }
+
+
+ /**
* Add a repository to our internal array only.
*
* @param repository The new repository
@@ -1037,12 +1112,18 @@
*/
protected void addRepositoryInternal(String repository) {
+ URLStreamHandler streamHandler = null;
+ String protocol = parseProtocol(repository);
+ if (factory != null)
+ streamHandler = factory.createURLStreamHandler(protocol);
+
// Validate the manifest of a JAR file repository
if (!repository.endsWith("/")) {
try {
JarFile jarFile = null;
+ Manifest manifest = null;
if (repository.startsWith("jar:")) {
- URL url = new URL(repository);
+ URL url = new URL(null, repository, streamHandler);
JarURLConnection conn =
(JarURLConnection) url.openConnection();
conn.setAllowUserInteraction(false);
@@ -1054,13 +1135,20 @@
jarFile = new JarFile(repository.substring(7));
} else if (repository.startsWith("file:")) {
jarFile = new JarFile(repository.substring(5));
+ } else if (repository.endsWith(".jar")) {
+ URL url = new URL(null, repository, streamHandler);
+ URLConnection conn = url.openConnection();
+ JarInputStream jis =
+ new JarInputStream(conn.getInputStream());
+ manifest = jis.getManifest();
} else {
throw new IllegalArgumentException
("addRepositoryInternal: Invalid URL '" +
repository + "'");
}
- Manifest manifest = jarFile.getManifest();
- if (manifest != null) {
+ if (!((manifest == null) && (jarFile == null))) {
+ if ((manifest == null) && (jarFile != null))
+ manifest = jarFile.getManifest();
Iterator extensions =
Extension.getAvailable(manifest).iterator();
while (extensions.hasNext())
@@ -1070,9 +1158,12 @@
while (extensions.hasNext())
required.add(extensions.next());
}
- jarFile.close();
+ if (jarFile != null)
+ jarFile.close();
} catch (Throwable t) {
- throw new IllegalArgumentException("addRepositoryInternal: " + t);
+ t.printStackTrace();
+ throw new IllegalArgumentException
+ ("addRepositoryInternal: " + t);
}
}
@@ -1093,11 +1184,30 @@
* @param input The array of String to be converted
*/
protected static URL[] convert(String input[]) {
+ return convert(input, null);
+ }
+
+
+ /**
+ * Convert an array of String to an array of URL and return it.
+ *
+ * @param input The array of String to be converted
+ * @param factory Handler factory to use to generate the URLs
+ */
+ protected static URL[] convert(String input[],
+ URLStreamHandlerFactory factory) {
+
+ URLStreamHandler streamHandler = null;
URL url[] = new URL[input.length];
for (int i = 0; i < url.length; i++) {
try {
- url[i] = new URL(input[i]);
+ String protocol = parseProtocol(input[i]);
+ if (factory != null)
+ streamHandler = factory.createURLStreamHandler(protocol);
+ else
+ streamHandler = null;
+ url[i] = new URL(null, input[i], streamHandler);
} catch (MalformedURLException e) {
url[i] = null;
}
1.14 +120 -31 jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/loader/StandardLoader.java
Index: StandardLoader.java
===================================================================
RCS file: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/loader/StandardLoader.java,v
retrieving revision 1.13
retrieving revision 1.14
diff -u -r1.13 -r1.14
--- StandardLoader.java 2000/12/22 00:37:50 1.13
+++ StandardLoader.java 2001/01/23 05:05:48 1.14
@@ -1,7 +1,7 @@
/*
- * $Header: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/loader/StandardLoader.java,v 1.13 2000/12/22 00:37:50 craigmcc Exp $
- * $Revision: 1.13 $
- * $Date: 2000/12/22 00:37:50 $
+ * $Header: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/loader/StandardLoader.java,v 1.14 2001/01/23 05:05:48 remm Exp $
+ * $Revision: 1.14 $
+ * $Date: 2001/01/23 05:05:48 $
*
* ====================================================================
*
@@ -70,10 +70,19 @@
import java.beans.PropertyChangeSupport;
import java.io.File;
import java.io.IOException;
+import java.io.InputStream;
+import java.io.FileOutputStream;
+import java.io.OutputStream;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLClassLoader;
+import java.net.URLStreamHandlerFactory;
import javax.servlet.ServletContext;
+import javax.naming.NamingException;
+import javax.naming.NameClassPair;
+import javax.naming.NamingEnumeration;
+import javax.naming.directory.DirContext;
+import org.apache.naming.resources.DirContextURLStreamHandlerFactory;
import org.apache.catalina.Container;
import org.apache.catalina.Context;
import org.apache.catalina.Globals;
@@ -83,7 +92,6 @@
import org.apache.catalina.LifecycleListener;
import org.apache.catalina.Loader;
import org.apache.catalina.Logger;
-import org.apache.catalina.Resources;
import org.apache.catalina.util.LifecycleSupport;
import org.apache.catalina.util.StringManager;
@@ -101,7 +109,8 @@
* is not present, the system class loader will be used instead.
*
* @author Craig R. McClanahan
- * @version $Revision: 1.13 $ $Date: 2000/12/22 00:37:50 $
+ * @author Remy Maucherat
+ * @version $Revision: 1.14 $ $Date: 2001/01/23 05:05:48 $
*/
public final class StandardLoader
@@ -581,10 +590,16 @@
// Construct a class loader based on our current repositories list
try {
+ URLStreamHandlerFactory shFactory = null;
+ if ((this.container != null) &&
+ (this.container.getResources() != null))
+ shFactory = new DirContextURLStreamHandlerFactory
+ (this.container.getResources());
if (parentClassLoader == null)
- classLoader = new StandardClassLoader();
+ classLoader = new StandardClassLoader(shFactory);
else
- classLoader = new StandardClassLoader(parentClassLoader);
+ classLoader = new StandardClassLoader
+ (parentClassLoader, shFactory);
for (int i = 0; i < repositories.length; i++)
classLoader.addRepository(repositories[i]);
classLoader.addRestricted("org.apache.catalina.");
@@ -794,6 +809,9 @@
repository = repository.substring(7);
else if (repository.startsWith("file:"))
repository = repository.substring(5);
+ else if (repository.startsWith("jndi:"))
+ repository =
+ servletContext.getRealPath(repository.substring(5));
else
continue;
if (repository.endsWith("/"))
@@ -809,7 +827,7 @@
}
// Store the assembled class path as a servlet context attribute
- servletContext.setAttribute(Globals.CLASS_PATH_ATTR,
+ servletContext.setAttribute(Globals.CLASS_PATH_ATTR,
classpath.toString());
}
@@ -823,12 +841,13 @@
if (!(container instanceof Context))
return;
- Resources resources = ((Context) container).getResources();
+ ServletContext servletContext =
+ ((Context) container).getServletContext();
// Add the WEB-INF/classes subdirectory
- URL classesURL = null;
+ URL classesURL = null;
try {
- classesURL = resources.getResource("/WEB-INF/classes");
+ classesURL = servletContext.getResource("/WEB-INF/classes");
} catch (MalformedURLException e) {
classesURL = null;
}
@@ -856,24 +875,69 @@
}
addRepository(classesURLString + "/");
}
+
+ // Loading the work directory
+ File workDir =
+ (File) servletContext.getAttribute(Globals.WORK_DIR_ATTR);
+
+ if (workDir != null) {
+
+ DirContext resources = container.getResources();
+ String libName = "/WEB-INF/lib";
+ DirContext libDir = null;
+ // Looking up directory /WEB-INF/lib in the context
+ try {
+ Object object = resources.lookup(libName);
+ if (object instanceof DirContext)
+ libDir = (DirContext) object;
+ } catch(NamingException e) {
+ // Silent catch: it's valid that no /WEB-INF/lib directory
+ //exists
+ }
- // Add the WEB-INF/lib/*.jar files
- URL libURL = null;
- try {
- libURL = resources.getResource("/WEB-INF/lib");
- } catch (MalformedURLException e) {
- libURL = null;
- }
- // FIXME - This still requires disk directory! Scan JARs if present
- if ((libURL != null) && "file".equals(libURL.getProtocol())) {
- File libFile = new File(libURL.getFile());
- if (libFile.exists() && libFile.canRead() &&
- libFile.isDirectory()) {
- String filenames[] = libFile.list();
- for (int i = 0; i < filenames.length; i++) {
- if (!filenames[i].endsWith(".jar"))
- continue;
- File jarFile = new File(libFile, filenames[i]);
+ // Add the WEB-INF/lib/*.jar files
+ if (libDir != null) {
+ // Enumerate children
+ try {
+ NamingEnumeration enum = resources.list(libName);
+ while (enum.hasMoreElements()) {
+ NameClassPair ncPair =
+ (NameClassPair) enum.nextElement();
+ String filename = ncPair.getName();
+ if (!filename.endsWith(".jar"))
+ continue;
+ try {
+ URL fileURL = servletContext.getResource
+ (libName + "/" + filename);
+ log(" Adding '" + "file: " +
+ libName + "/" + filename + "'");
+ // Copying the file to the work dir
+ File dest = new File(workDir, filename);
+ if (copyJAR(fileURL.openStream(),
+ new FileOutputStream(dest)))
+ addRepository(dest.toURL().toString());
+ } catch (MalformedURLException e) {
+ } catch (IOException e) {
+ }
+ }
+ } catch(NamingException e) {
+ }
+ }
+
+ } else {
+
+ // Add the WEB-INF/lib/*.jar files
+ // This requires disk directory! Scan JARs if present
+
+ File libFile = new File(((Context) container).getDocBase(),
+ "/WEB-INF/lib");
+ if (libFile.exists() && libFile.canRead() &&
+ libFile.isDirectory()) {
+ String filenames[] = libFile.list();
+ for (int i = 0; i < filenames.length; i++) {
+ if (!filenames[i].endsWith(".jar"))
+ continue;
+ File jarFile = new File(libFile, filenames[i]);
try {
if (debug > 0)
log(" Adding '" + "file: " +
@@ -882,9 +946,34 @@
} catch (IOException e) {
log(jarFile.getAbsolutePath(), e);
}
- }
- }
- }
+ }
+ }
+
+ }
+
+ }
+
+
+ /**
+ * Copy a JAR file to the specified temp directory.
+ */
+ private boolean copyJAR(InputStream is, OutputStream os) {
+
+ try {
+ byte[] buf = new byte[4096];
+ while (true) {
+ int len = is.read(buf);
+ if (len < 0)
+ break;
+ os.write(buf, 0, len);
+ }
+ is.close();
+ os.close();
+ } catch (IOException e) {
+ return false;
+ }
+
+ return true;
}
1.9 +9 -9 jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/startup/Bootstrap.java
Index: Bootstrap.java
===================================================================
RCS file: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/startup/Bootstrap.java,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -r1.8 -r1.9
--- Bootstrap.java 2000/12/21 23:47:20 1.8
+++ Bootstrap.java 2001/01/23 05:05:51 1.9
@@ -1,7 +1,7 @@
/*
- * $Header: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/startup/Bootstrap.java,v 1.8 2000/12/21 23:47:20 craigmcc Exp $
- * $Revision: 1.8 $
- * $Date: 2000/12/21 23:47:20 $
+ * $Header: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/startup/Bootstrap.java,v 1.9 2001/01/23 05:05:51 remm Exp $
+ * $Revision: 1.9 $
+ * $Date: 2001/01/23 05:05:51 $
*
* ====================================================================
*
@@ -85,7 +85,7 @@
* class path and therefore not visible to application level classes.
*
* @author Craig R. McClanahan
- * @version $Revision: 1.8 $ $Date: 2000/12/21 23:47:20 $
+ * @version $Revision: 1.9 $ $Date: 2001/01/23 05:05:51 $
*/
public final class Bootstrap {
@@ -117,9 +117,9 @@
}
// Construct the class loaders we will need
- ClassLoader systemLoader = createSystemLoader();
- ClassLoader catalinaLoader = createCatalinaLoader(systemLoader);
- ClassLoader sharedLoader = createSharedLoader(systemLoader);
+ ClassLoader commonLoader = createCommonLoader();
+ ClassLoader catalinaLoader = createCatalinaLoader(commonLoader);
+ ClassLoader sharedLoader = createSharedLoader(commonLoader);
// Load our startup class and call its process() method
try {
@@ -171,10 +171,10 @@
* Construct and return the class loader to be used for loading
* of the shared system classes.
*/
- private static ClassLoader createSystemLoader() {
+ private static ClassLoader createCommonLoader() {
if (debug >= 1)
- log("Creating SYSTEM class loader");
+ log("Creating COMMON class loader");
// Construct the "class path" for this class loader
ArrayList list = new ArrayList();
1.12 +10 -10 jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/startup/Catalina.java
Index: Catalina.java
===================================================================
RCS file: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/startup/Catalina.java,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -r1.11 -r1.12
--- Catalina.java 2001/01/04 20:05:39 1.11
+++ Catalina.java 2001/01/23 05:05:51 1.12
@@ -1,7 +1,7 @@
/*
- * $Header: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/startup/Catalina.java,v 1.11 2001/01/04 20:05:39 craigmcc Exp $
- * $Revision: 1.11 $
- * $Date: 2001/01/04 20:05:39 $
+ * $Header: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/startup/Catalina.java,v 1.12 2001/01/23 05:05:51 remm Exp $
+ * $Revision: 1.12 $
+ * $Date: 2001/01/23 05:05:51 $
*
* ====================================================================
*
@@ -96,7 +96,7 @@
* </u>
*
* @author Craig R. McClanahan
- * @version $Revision: 1.11 $ $Date: 2001/01/04 20:05:39 $
+ * @version $Revision: 1.12 $ $Date: 2001/01/23 05:05:51 $
*/
public class Catalina {
@@ -367,12 +367,12 @@
mapper.addRule("Server/Service/Engine/Host/Resources",
mapper.objectCreate
- ("org.apache.catalina.core.StandardResources",
+ ("org.apache.naming.resources.FileDirContext",
"className"));
mapper.addRule("Server/Service/Engine/Host/Resources",
mapper.setProperties());
mapper.addRule("Server/Service/Engine/Host/Resources", mapper.addChild
- ("setResources", "org.apache.catalina.Resources"));
+ ("setResources", "javax.naming.directory.DirContext"));
mapper.addRule("Server/Service/Engine/Host/Valve", mapper.objectCreate
(null, "className"));
@@ -402,12 +402,12 @@
("setRealm", "org.apache.catalina.Realm"));
mapper.addRule("Server/Service/Engine/Resources", mapper.objectCreate
- ("org.apache.catalina.core.StandardResources",
+ ("org.apache.naming.resources.FileDirContext",
"className"));
mapper.addRule("Server/Service/Engine/Resources",
mapper.setProperties());
mapper.addRule("Server/Service/Engine/Resources", mapper.addChild
- ("setResources", "org.apache.catalina.Resources"));
+ ("setResources", "javax.naming.directory.DirContext"));
mapper.addRule("Server/Service/Engine/Valve", mapper.objectCreate
(null, "className"));
@@ -540,12 +540,12 @@
mapper.addRule(prefix + "/Resources",
mapper.objectCreate
- ("org.apache.catalina.core.StandardResources",
+ ("org.apache.naming.resources.FileDirContext",
"className"));
mapper.addRule(prefix + "/Resources",
mapper.setProperties());
mapper.addRule(prefix + "/Resources", mapper.addChild
- ("setResources", "org.apache.catalina.Resources"));
+ ("setResources", "javax.naming.directory.DirContext"));
mapper.addRule(prefix + "/Valve", mapper.objectCreate
(null, "className"));
1.37 +14 -14 jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/startup/ContextConfig.java
Index: ContextConfig.java
===================================================================
RCS file: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/startup/ContextConfig.java,v
retrieving revision 1.36
retrieving revision 1.37
diff -u -r1.36 -r1.37
--- ContextConfig.java 2001/01/23 02:52:00 1.36
+++ ContextConfig.java 2001/01/23 05:05:51 1.37
@@ -1,7 +1,7 @@
/*
- * $Header: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/startup/ContextConfig.java,v 1.36 2001/01/23 02:52:00 craigmcc Exp $
- * $Revision: 1.36 $
- * $Date: 2001/01/23 02:52:00 $
+ * $Header: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/startup/ContextConfig.java,v 1.37 2001/01/23 05:05:51 remm Exp $
+ * $Revision: 1.37 $
+ * $Date: 2001/01/23 05:05:51 $
*
* ====================================================================
*
@@ -89,6 +89,7 @@
import java.util.Stack;
import java.util.jar.JarEntry;
import java.util.jar.JarFile;
+import javax.servlet.ServletContext;
import org.apache.catalina.Authenticator;
import org.apache.catalina.Context;
import org.apache.catalina.Globals;
@@ -97,7 +98,6 @@
import org.apache.catalina.LifecycleListener;
import org.apache.catalina.Logger;
import org.apache.catalina.Pipeline;
-import org.apache.catalina.Resources;
import org.apache.catalina.Valve;
import org.apache.catalina.Wrapper;
import org.apache.catalina.core.ContainerBase;
@@ -118,7 +118,7 @@
* of that Context, and the associated defined servlets.
*
* @author Craig R. McClanahan
- * @version $Revision: 1.36 $ $Date: 2001/01/23 02:52:00 $
+ * @version $Revision: 1.37 $ $Date: 2001/01/23 05:05:51 $
*/
public final class ContextConfig
@@ -225,10 +225,10 @@
// Open the application web.xml file, if it exists
InputStream stream = null;
- Resources resources = context.getResources();
- if (resources != null)
- stream =
- resources.getResourceAsStream(Constants.ApplicationWebXml);
+ ServletContext servletContext = context.getServletContext();
+ if (servletContext != null)
+ stream = servletContext.getResourceAsStream
+ (Constants.ApplicationWebXml);
if (stream == null) {
log(sm.getString("contextConfig.applicationMissing"));
return;
@@ -785,11 +785,11 @@
// Accumulate the common permissions we will add to all code sources
if (debug >= 1)
log("Building common permissions to add");
- Resources resources = context.getResources();
+ ServletContext servletContext = context.getServletContext();
Permissions commonPerms = new Permissions();
URL baseURL = null;
try {
- baseURL = resources.getResource("/");
+ baseURL = servletContext.getResource("/");
if (debug >= 1)
log(" baseURL=" + baseURL.toString());
} catch (MalformedURLException e) {
@@ -822,7 +822,7 @@
log("Building document root code source");
URL docURL = null;
try {
- docURL = resources.getResource("/WEB-INF");
+ docURL = servletContext.getResource("/WEB-INF");
if (debug >= 1)
log(" docURL=" + docURL.toString());
} catch (MalformedURLException e) {
@@ -977,10 +977,10 @@
// FIXME - Yet another dependence on files
if (debug >= 1)
log("Scanning library JAR files");
- Resources resources = context.getResources();
+ ServletContext servletContext = context.getServletContext();
URL libURL = null;
try {
- libURL = resources.getResource("/WEB-INF/lib");
+ libURL = servletContext.getResource("/WEB-INF/lib");
} catch (MalformedURLException e) {
;
}