Author: markt
Date: Mon Nov 9 20:43:47 2009
New Revision: 834220
URL: http://svn.apache.org/viewvc?rev=834220&view=rev
Log:
The assumption that contexts will always be file system based or that resources
will always be extracted to the work does not hold true, particularly for
custom DirContext implementations. Don't make the assumption and clean-up up
the redundant field that is no longer required.
Modified:
tomcat/trunk/java/org/apache/catalina/core/ApplicationContext.java
tomcat/trunk/java/org/apache/catalina/core/StandardContext.java
tomcat/trunk/java/org/apache/catalina/ha/context/ReplicatedContext.java
tomcat/trunk/java/org/apache/catalina/startup/DefaultJarScanner.java
Modified: tomcat/trunk/java/org/apache/catalina/core/ApplicationContext.java
URL:
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/core/ApplicationContext.java?rev=834220&r1=834219&r2=834220&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/core/ApplicationContext.java
(original)
+++ tomcat/trunk/java/org/apache/catalina/core/ApplicationContext.java Mon Nov
9 20:43:47 2009
@@ -19,7 +19,6 @@
package org.apache.catalina.core;
-import java.io.File;
import java.io.InputStream;
import java.net.MalformedURLException;
import java.net.URL;
@@ -90,10 +89,9 @@
*
* @param context The associated Context instance
*/
- public ApplicationContext(String basePath, StandardContext context) {
+ public ApplicationContext(StandardContext context) {
super();
this.context = context;
- this.basePath = basePath;
// Populate session tracking modes
populateSessionTrackingModes();
@@ -158,12 +156,6 @@
/**
- * Base path.
- */
- private String basePath = null;
-
-
- /**
* Thread local data used during request dispatch.
*/
private ThreadLocal<DispatchData> dispatchData =
@@ -492,37 +484,21 @@
throw new
MalformedURLException(sm.getString("applicationContext.requestDispatcher.iae",
path));
- path = RequestUtil.normalize(path);
- if (path == null)
+ String normPath = RequestUtil.normalize(path);
+ if (normPath == null)
return (null);
- String libPath = "/WEB-INF/lib/";
- if ((path.startsWith(libPath)) && (path.endsWith(".jar"))) {
- File jarFile = null;
- if (context.isFilesystemBased()) {
- jarFile = new File(basePath, path);
- } else {
- jarFile = new File(context.getWorkPath(), path);
- }
- if (jarFile.exists()) {
- return jarFile.toURI().toURL();
- } else {
- return null;
- }
- } else {
-
- DirContext resources = context.getResources();
- if (resources != null) {
- String fullPath = context.getName() + path;
- String hostName = context.getParent().getName();
- try {
- resources.lookup(path);
- return new URL
- ("jndi", "", 0, getJNDIUri(hostName, fullPath),
- new DirContextURLStreamHandler(resources));
- } catch (Exception e) {
- // Ignore
- }
+ DirContext resources = context.getResources();
+ if (resources != null) {
+ String fullPath = context.getName() + normPath;
+ String hostName = context.getParent().getName();
+ try {
+ resources.lookup(path);
+ return new URL
+ ("jndi", "", 0, getJNDIUri(hostName, fullPath),
+ new DirContextURLStreamHandler(resources));
+ } catch (Exception e) {
+ // Ignore
}
}
Modified: tomcat/trunk/java/org/apache/catalina/core/StandardContext.java
URL:
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/core/StandardContext.java?rev=834220&r1=834219&r2=834220&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/core/StandardContext.java (original)
+++ tomcat/trunk/java/org/apache/catalina/core/StandardContext.java Mon Nov 9
20:43:47 2009
@@ -1758,7 +1758,7 @@
public ServletContext getServletContext() {
if (context == null) {
- context = new ApplicationContext(getBasePath(), this);
+ context = new ApplicationContext(this);
if (altDDName != null)
context.setAttribute(Globals.ALT_DD_ATTR,altDDName);
}
Modified:
tomcat/trunk/java/org/apache/catalina/ha/context/ReplicatedContext.java
URL:
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/ha/context/ReplicatedContext.java?rev=834220&r1=834219&r2=834220&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/ha/context/ReplicatedContext.java
(original)
+++ tomcat/trunk/java/org/apache/catalina/ha/context/ReplicatedContext.java Mon
Nov 9 20:43:47 2009
@@ -54,7 +54,7 @@
super.addLifecycleListener(this);
try {
CatalinaCluster catclust = (CatalinaCluster)this.getCluster();
- if (this.context == null) this.context = new
ReplApplContext(this.getBasePath(), this);
+ if (this.context == null) this.context = new ReplApplContext(this);
if ( catclust != null ) {
ReplicatedMap map = new
ReplicatedMap(this,catclust.getChannel(),DEFAULT_REPL_TIMEOUT,
getName(),getClassLoaders());
@@ -116,7 +116,7 @@
@Override
public ServletContext getServletContext() {
if (context == null) {
- context = new ReplApplContext(getBasePath(), this);
+ context = new ReplApplContext(this);
if (getAltDDName() != null)
context.setAttribute(Globals.ALT_DD_ATTR,getAltDDName());
}
@@ -130,8 +130,8 @@
protected ConcurrentHashMap<String, Object> tomcatAttributes =
new ConcurrentHashMap<String, Object>();
- public ReplApplContext(String basePath, ReplicatedContext context) {
- super(basePath,context);
+ public ReplApplContext(ReplicatedContext context) {
+ super(context);
}
protected ReplicatedContext getParent() {
Modified: tomcat/trunk/java/org/apache/catalina/startup/DefaultJarScanner.java
URL:
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/startup/DefaultJarScanner.java?rev=834220&r1=834219&r2=834220&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/startup/DefaultJarScanner.java
(original)
+++ tomcat/trunk/java/org/apache/catalina/startup/DefaultJarScanner.java Mon
Nov 9 20:43:47 2009
@@ -163,7 +163,7 @@
callback.scan((JarURLConnection) conn);
} else {
String urlStr = url.toString();
- if (urlStr.startsWith("file:")) {
+ if (urlStr.startsWith("file:") || urlStr.startsWith("jndi:")) {
if (urlStr.endsWith(JAR_EXT)) {
URL jarURL = new URL("jar:" + urlStr + "!/");
callback.scan((JarURLConnection) jarURL.openConnection());
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]