You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by ma...@apache.org on 2013/06/14 16:14:01 UTC
svn commit: r1493080 - in /tomcat/trunk/java/org/apache/catalina:
deploy/WebXml.java startup/ContextConfig.java
Author: markt
Date: Fri Jun 14 14:14:00 2013
New Revision: 1493080
URL: http://svn.apache.org/r1493080
Log:
Always process container JARs for SCIs
Order of SCI processing for container JARs compared to web application JARs should be the same as class loading order.
Modified:
tomcat/trunk/java/org/apache/catalina/deploy/WebXml.java
tomcat/trunk/java/org/apache/catalina/startup/ContextConfig.java
Modified: tomcat/trunk/java/org/apache/catalina/deploy/WebXml.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/deploy/WebXml.java?rev=1493080&r1=1493079&r2=1493080&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/deploy/WebXml.java (original)
+++ tomcat/trunk/java/org/apache/catalina/deploy/WebXml.java Fri Jun 14 14:14:00 2013
@@ -600,12 +600,13 @@ public class WebXml {
// Is this JAR part of the application or is it a container JAR? Assume it
// is.
private boolean webappJar = true;
- public void setWebappJar(boolean webappJar) {
- this.webappJar = webappJar;
- }
- public boolean getWebappJar() {
- return webappJar;
- }
+ public void setWebappJar(boolean webappJar) { this.webappJar = webappJar; }
+ public boolean getWebappJar() { return webappJar; }
+
+ // Does this web application delegate first for class loading?
+ private boolean delegate = false;
+ public boolean getDelegate() { return delegate; }
+ public void setDelegate(boolean delegate) { this.delegate = delegate; }
@Override
public String toString() {
@@ -2109,9 +2110,21 @@ public class WebXml {
orderFragments(orderedFragments, afterSet);
}
+ // Container fragments are always included
+ Set<WebXml> containerFragments = new LinkedHashSet<>();
+ // Find all the container fragments and remove any present from the
+ // ordered list
+ for (WebXml fragment : fragments.values()) {
+ if (!fragment.getWebappJar()) {
+ containerFragments.add(fragment);
+ orderedFragments.remove(fragment);
+ }
+ }
+
// Avoid NPE when unit testing
if (servletContext != null) {
- // Publish the ordered fragments
+ // Publish the ordered fragments. The app does not need to know
+ // about container fragments
List<String> orderedJarFileNames = null;
if (orderingPresent) {
orderedJarFileNames = new ArrayList<>();
@@ -2123,7 +2136,21 @@ public class WebXml {
orderedJarFileNames);
}
- return orderedFragments;
+ // The remainder of the processing needs to know about container
+ // fragments
+ if (containerFragments.size() > 0) {
+ Set<WebXml> result = new LinkedHashSet<>();
+ if (containerFragments.iterator().next().getDelegate()) {
+ result.addAll(containerFragments);
+ result.addAll(orderedFragments);
+ } else {
+ result.addAll(orderedFragments);
+ result.addAll(containerFragments);
+ }
+ return result;
+ } else {
+ return orderedFragments;
+ }
}
private static void decoupleOtherGroups(Set<WebXml> group) {
Modified: tomcat/trunk/java/org/apache/catalina/startup/ContextConfig.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/startup/ContextConfig.java?rev=1493080&r1=1493079&r2=1493080&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/startup/ContextConfig.java (original)
+++ tomcat/trunk/java/org/apache/catalina/startup/ContextConfig.java Fri Jun 14 14:14:00 2013
@@ -2737,6 +2737,9 @@ public class ContextConfig implements Li
WebXml fragment = new WebXml();
fragment.setWebappJar(isWebapp);
+ if (context instanceof StandardContext) {
+ fragment.setDelegate(((StandardContext) context).getDelegate());
+ }
try {
// Only web application JARs are checked for web-fragment.xml
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org