You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by rm...@apache.org on 2013/10/29 12:04:13 UTC
svn commit: r1536659 -
/tomee/tomee/trunk/tomee/tomee-loader/src/main/java/org/apache/tomee/loader/EmbeddedJarScanner.java
Author: rmannibucau
Date: Tue Oct 29 11:04:12 2013
New Revision: 1536659
URL: http://svn.apache.org/r1536659
Log:
setting webfragment of tomcat7-websocket jar manually since it is buggy in tomcat 7.0.47 - TODO: see if we remove the hack or keep it for speed in next versions
Modified:
tomee/tomee/trunk/tomee/tomee-loader/src/main/java/org/apache/tomee/loader/EmbeddedJarScanner.java
Modified: tomee/tomee/trunk/tomee/tomee-loader/src/main/java/org/apache/tomee/loader/EmbeddedJarScanner.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/tomee/tomee-loader/src/main/java/org/apache/tomee/loader/EmbeddedJarScanner.java?rev=1536659&r1=1536658&r2=1536659&view=diff
==============================================================================
--- tomee/tomee/trunk/tomee/tomee-loader/src/main/java/org/apache/tomee/loader/EmbeddedJarScanner.java (original)
+++ tomee/tomee/trunk/tomee/tomee-loader/src/main/java/org/apache/tomee/loader/EmbeddedJarScanner.java Tue Oct 29 11:04:12 2013
@@ -49,6 +49,8 @@ public class EmbeddedJarScanner implemen
*/
private static final StringManager sm = StringManager.getManager(Constants.Package);
+ private static final String FRAGMENT_CALLBACK = "org.apache.catalina.startup.ContextConfig$FragmentJarScannerCallback";
+
/**
* Scan the provided ServletContext and classloader for JAR files. Each JAR
* file found will be passed to the callback handler to be processed.
@@ -71,7 +73,7 @@ public class EmbeddedJarScanner implemen
// scan = scan.exclude(".*/WEB-INF/lib/.*"); // doing it simply prevent ServletContainerInitializer to de discovered
for (final URL url : scan) {
- if (isWebInfClasses(url) && !"org.apache.catalina.startup.ContextConfig$FragmentJarScannerCallback".equals(callback.getClass().getName())) { // we need all fragments to let SCI working
+ if (isWebInfClasses(url) && !FRAGMENT_CALLBACK.equals(callback.getClass().getName())) { // we need all fragments to let SCI working
continue;
}
@@ -127,7 +129,22 @@ public class EmbeddedJarScanner implemen
if (urlStr.endsWith(Constants.JAR_EXT)) {
final URL jarURL = new URL("jar:" + urlStr + "!/");
- callback.scan((JarURLConnection) jarURL.openConnection());
+
+ final String fileName = URLs.toFile(jarURL).getName();
+ // bug in tomcat 7.0.47 so we need to handle it manually
+ // TODO: remove this hack when upgrading to Tomcat 7.0.48
+ if (fileName.contains("tomcat7-websocket") && FRAGMENT_CALLBACK.equals(callback.getClass().getName())) {
+ final WebXml fragment = new WebXml();
+ fragment.setName("org_apache_tomcat_websocket");
+ fragment.setDistributable(true);
+ fragment.setMetadataComplete(true);
+ fragment.setVersion("3.0");
+ fragment.setURL(jarURL);
+ fragment.setJarName(fileName);
+ Map.class.cast(Reflections.get(callback, "fragments")).put(fragment.getName(), fragment);
+ } else {
+ callback.scan(JarURLConnection.class.cast(jarURL.openConnection()));
+ }
} else {