Bug 501038: Update Apache Tomcat to version 8.5.5. Adapt the changes in the APIs.
diff --git a/build-web-container/copyJavaxToOsgi.sh b/build-web-container/copyJavaxToOsgi.sh
index 2a83cbd..25074da 100755
--- a/build-web-container/copyJavaxToOsgi.sh
+++ b/build-web-container/copyJavaxToOsgi.sh
@@ -7,6 +7,7 @@
 cp $SRC/javax.el-3.0.0.20150414.jar $REPO/javax.el/javax.el-3.0.0.jar
 cp $SRC/javax.mail-1.4.0.v201005080615.jar $REPO/javax.mail/javax.mail-1.4.0.v201005080615.jar
 cp $SRC/javax.persistence-2.1.0.v201304241213.jar $REPO/javax.persistence/javax.persistence-2.1.0.v201304241213.jar
+cp $SRC/javax.security.auth.message-1.1.0.jar $REPO/javax.security.auth.message/javax.security.auth.message-1.1.0.jar
 cp $SRC/javax.servlet-3.1.0.20150414.jar $REPO/javax.servlet/javax.servlet-3.1.0.jar
 cp $SRC/javax.servlet.jsp-2.3.0.jar $REPO/javax.servlet.jsp/javax.servlet.jsp-2.3.0.jar
 cp $SRC/javax.transaction-1.1.0.v201205091237.jar $REPO/javax.transaction/javax.transaction-1.1.0.v201205091237.jar
diff --git a/build-web-container/copyToOsgi.sh b/build-web-container/copyToOsgi.sh
index 216244c..f93961e 100755
--- a/build-web-container/copyToOsgi.sh
+++ b/build-web-container/copyToOsgi.sh
@@ -7,18 +7,18 @@
 cp $SRC/org.eclipse.virgo.util.io-3.6.3.*.jar $REPO/org.eclipse.virgo.util.io/org.eclipse.virgo.util.io-3.6.3.jar
 cp $SRC/org.eclipse.virgo.util.math-3.6.3.*.jar $REPO/org.eclipse.virgo.util.math/org.eclipse.virgo.util.math-3.6.3.jar
 cp $SRC/org.eclipse.virgo.util.parser.manifest-3.6.3.*.jar $REPO/org.eclipse.virgo.util.parser.manifest/org.eclipse.virgo.util.parser.manifest-3.6.3.jar
-cp $SRC/org.apache.catalina.ha-8.0.21.jar $REPO/org.apache.catalina.ha/org.apache.catalina.ha-8.0.21.jar
-cp $SRC/org.apache.catalina-8.0.21.jar $REPO/org.apache.catalina/org.apache.catalina-8.0.21.jar
-cp $SRC/org.apache.catalina.tribes-8.0.21.jar $REPO/org.apache.catalina.tribes/org.apache.catalina.tribes-8.0.21.jar
-cp $SRC/org.apache.coyote-8.0.21.jar $REPO/org.apache.coyote/org.apache.coyote-8.0.21.jar
-cp $SRC/org.apache.el-8.0.21.jar $REPO/org.apache.el/org.apache.el-8.0.21.jar
-cp $SRC/org.apache.jasper-8.0.21.jar $REPO/org.apache.jasper/org.apache.jasper-8.0.21.jar
-cp $SRC/org.apache.juli.extras-8.0.21.jar $REPO/org.apache.juli.extras/org.apache.juli.extras-8.0.21.jar
-cp $SRC/org.apache.tomcat.api-8.0.21.jar $REPO/org.apache.tomcat.api/org.apache.tomcat.api-8.0.21.jar
-cp $SRC/org.apache.tomcat.jni-8.0.21.jar $REPO/org.apache.tomcat.jni/org.apache.tomcat.jni-8.0.21.jar
-cp $SRC/org.apache.tomcat.util-8.0.21.jar $REPO/org.apache.tomcat.util/org.apache.tomcat.util-8.0.21.jar
-cp $SRC/org.apache.tomcat.util.scan-8.0.21.jar $REPO/org.apache.tomcat.util.scan/org.apache.tomcat.util.scan-8.0.21.jar
-cp $SRC/org.apache.tomcat.websocket-8.0.21.jar $REPO/org.apache.tomcat.websocket/org.apache.tomcat.websocket-8.0.21.jar
+cp $SRC/org.apache.catalina.ha-8.5.5.jar $REPO/org.apache.catalina.ha/org.apache.catalina.ha-8.5.5.jar
+cp $SRC/org.apache.catalina-8.5.5.jar $REPO/org.apache.catalina/org.apache.catalina-8.5.5.jar
+cp $SRC/org.apache.catalina.tribes-8.5.5.jar $REPO/org.apache.catalina.tribes/org.apache.catalina.tribes-8.5.5.jar
+cp $SRC/org.apache.coyote-8.5.5.jar $REPO/org.apache.coyote/org.apache.coyote-8.5.5.jar
+cp $SRC/org.apache.el-8.5.5.jar $REPO/org.apache.el/org.apache.el-8.5.5.jar
+cp $SRC/org.apache.jasper-8.5.5.jar $REPO/org.apache.jasper/org.apache.jasper-8.5.5.jar
+cp $SRC/org.apache.juli.extras-8.5.5.jar $REPO/org.apache.juli.extras/org.apache.juli.extras-8.5.5.jar
+cp $SRC/org.apache.tomcat.api-8.5.5.jar $REPO/org.apache.tomcat.api/org.apache.tomcat.api-8.5.5.jar
+cp $SRC/org.apache.tomcat.jni-8.5.5.jar $REPO/org.apache.tomcat.jni/org.apache.tomcat.jni-8.5.5.jar
+cp $SRC/org.apache.tomcat.util-8.5.5.jar $REPO/org.apache.tomcat.util/org.apache.tomcat.util-8.5.5.jar
+cp $SRC/org.apache.tomcat.util.scan-8.5.5.jar $REPO/org.apache.tomcat.util.scan/org.apache.tomcat.util.scan-8.5.5.jar
+cp $SRC/org.apache.tomcat.websocket-8.5.5.jar $REPO/org.apache.tomcat.websocket/org.apache.tomcat.websocket-8.5.5.jar
 cp $SRC/org.eclipse.gemini.web.core-2.2.1.*.jar $REPO/org.eclipse.gemini.web.core/org.eclipse.gemini.web.core-2.2.1.jar
 cp $SRC/org.eclipse.gemini.web.extender-2.2.1.*.jar $REPO/org.eclipse.gemini.web.extender/org.eclipse.gemini.web.extender-2.2.1.jar
 cp $SRC/org.eclipse.gemini.web.tomcat-2.2.1.*.jar $REPO/org.eclipse.gemini.web.tomcat/org.eclipse.gemini.web.tomcat-2.2.1.jar
diff --git a/build-web-container/resources/About.html b/build-web-container/resources/About.html
index 393822f..9e106ef 100644
--- a/build-web-container/resources/About.html
+++ b/build-web-container/resources/About.html
@@ -45,7 +45,7 @@
 		This product contains software developed by the Apache Software Foundation (<a href="http://www.apache.org">http://www.apache.org</a>).
 		<ul>
 			<li>
-				Apache Tomcat 8.0.21 - binary and source is available from the
+				Apache Tomcat 8.5.5 - binary and source is available from the
 				<a href="http://tomcat.apache.org/">Apache Tomcat project</a>
 			</li>
 		</ul>
diff --git a/build.versions b/build.versions
index 5d30a8d..e210c86 100644
--- a/build.versions
+++ b/build.versions
@@ -13,6 +13,7 @@
 javax.el=3.0.0.20150414
 javax.mail=1.4.0.v201005080615
 javax.persistence=2.1.0.v201304241213
+javax.security.auth.message=1.1.0
 javax.servlet.jsp=2.3.0
 javax.servlet.jstl=1.2.0.v201105211821
 javax.servlet=3.1.0.20150414
@@ -24,7 +25,7 @@
 org.eclipse.osgi=3.10.100.v20150529-1857
 org.eclipse.osgi.services=3.5.0.v20150519-2006
 org.eclipse.equinox.event=1.3.100.v20140115-1647
-org.apache.catalina=8.0.21
+org.apache.catalina=8.5.5
 org.eclipse.jdt=3.11.0.v20150602-1242
 org.slf4j.api=1.7.2.v20121108-1250
 org.slf4j.nop=1.7.2.v201212060727
diff --git a/org.eclipse.gemini.web.core/.classpath b/org.eclipse.gemini.web.core/.classpath
index a7adfda..8d504d0 100644
--- a/org.eclipse.gemini.web.core/.classpath
+++ b/org.eclipse.gemini.web.core/.classpath
@@ -22,12 +22,12 @@
 	</classpathentry>

 	<classpathentry kind="var" path="IVY_CACHE/org.junit/com.springsource.org.junit/4.7.0/com.springsource.org.junit-4.7.0.jar" sourcepath="/IVY_CACHE/org.junit/com.springsource.org.junit/4.7.0/com.springsource.org.junit-sources-4.7.0.jar"/>

 	<classpathentry kind="var" path="IVY_CACHE/org.eclipse.virgo.mirrored/org.slf4j.api/1.7.2.v20121108-1250/org.slf4j.api-1.7.2.v20121108-1250.jar" sourcepath="/IVY_CACHE/org.eclipse.virgo.mirrored/org.slf4j.api/1.7.2.v20121108-1250/org.slf4j.api-sources-1.7.2.v20121108-1250.jar"/>

-	<classpathentry kind="var" path="IVY_CACHE/org.eclipse.virgo.mirrored/org.apache.catalina/8.0.21/org.apache.catalina-8.0.21.jar" sourcepath="/IVY_CACHE/org.eclipse.virgo.mirrored/org.apache.catalina/8.0.21/org.apache.catalina.source-8.0.21.jar"/>

-	<classpathentry kind="var" path="IVY_CACHE/org.eclipse.virgo.mirrored/org.apache.juli/8.0.21/org.apache.juli-8.0.21.jar" sourcepath="/IVY_CACHE/org.eclipse.virgo.mirrored/org.apache.juli/8.0.21/org.apache.juli.source-8.0.21.jar"/>

-	<classpathentry kind="var" path="IVY_CACHE/org.eclipse.virgo.mirrored/org.apache.jasper/8.0.21/org.apache.jasper-8.0.21.jar" sourcepath="/IVY_CACHE/org.eclipse.virgo.mirrored/org.apache.jasper/8.0.21/org.apache.jasper.source-8.0.21.jar"/>

-	<classpathentry kind="var" path="IVY_CACHE/org.eclipse.virgo.mirrored/org.apache.catalina.ha/8.0.21/org.apache.catalina.ha-8.0.21.jar" sourcepath="/IVY_CACHE/org.eclipse.virgo.mirrored/org.apache.catalina.ha/8.0.21/org.apache.catalina.ha.source-8.0.21.jar"/>

-	<classpathentry kind="var" path="IVY_CACHE/org.eclipse.virgo.mirrored/org.apache.catalina.tribes/8.0.21/org.apache.catalina.tribes-8.0.21.jar" sourcepath="/IVY_CACHE/org.eclipse.virgo.mirrored/org.apache.catalina.tribes/8.0.21/org.apache.catalina.tribes.source-8.0.21.jar"/>

-	<classpathentry kind="var" path="IVY_CACHE/org.eclipse.virgo.mirrored/org.apache.coyote/8.0.21/org.apache.coyote-8.0.21.jar" sourcepath="/IVY_CACHE/org.eclipse.virgo.mirrored/org.apache.coyote/8.0.21/org.apache.coyote.source-8.0.21.jar"/>

+	<classpathentry kind="var" path="IVY_CACHE/org.eclipse.virgo.mirrored/org.apache.catalina/8.5.5/org.apache.catalina-8.5.5.jar" sourcepath="/IVY_CACHE/org.eclipse.virgo.mirrored/org.apache.catalina/8.5.5/org.apache.catalina.source-8.5.5.jar"/>

+	<classpathentry kind="var" path="IVY_CACHE/org.eclipse.virgo.mirrored/org.apache.juli/8.5.5/org.apache.juli-8.5.5.jar" sourcepath="/IVY_CACHE/org.eclipse.virgo.mirrored/org.apache.juli/8.5.5/org.apache.juli.source-8.5.5.jar"/>

+	<classpathentry kind="var" path="IVY_CACHE/org.eclipse.virgo.mirrored/org.apache.jasper/8.5.5/org.apache.jasper-8.5.5.jar" sourcepath="/IVY_CACHE/org.eclipse.virgo.mirrored/org.apache.jasper/8.5.5/org.apache.jasper.source-8.5.5.jar"/>

+	<classpathentry kind="var" path="IVY_CACHE/org.eclipse.virgo.mirrored/org.apache.catalina.ha/8.5.5/org.apache.catalina.ha-8.5.5.jar" sourcepath="/IVY_CACHE/org.eclipse.virgo.mirrored/org.apache.catalina.ha/8.5.5/org.apache.catalina.ha.source-8.5.5.jar"/>

+	<classpathentry kind="var" path="IVY_CACHE/org.eclipse.virgo.mirrored/org.apache.catalina.tribes/8.5.5/org.apache.catalina.tribes-8.5.5.jar" sourcepath="/IVY_CACHE/org.eclipse.virgo.mirrored/org.apache.catalina.tribes/8.5.5/org.apache.catalina.tribes.source-8.5.5.jar"/>

+	<classpathentry kind="var" path="IVY_CACHE/org.eclipse.virgo.mirrored/org.apache.coyote/8.5.5/org.apache.coyote-8.5.5.jar" sourcepath="/IVY_CACHE/org.eclipse.virgo.mirrored/org.apache.coyote/8.5.5/org.apache.coyote.source-8.5.5.jar"/>

 	<classpathentry kind="var" path="IVY_CACHE/org.eclipse.virgo.mirrored/javax.servlet/3.1.0.20150414/javax.servlet-3.1.0.20150414.jar" sourcepath="/IVY_CACHE/org.eclipse.virgo.mirrored/javax.servlet/3.1.0.20150414/javax.servlet-sources-3.1.0.20150414.jar"/>

 	<classpathentry kind="var" path="IVY_CACHE/org.easymock/com.springsource.org.easymock/2.3.0/com.springsource.org.easymock-2.3.0.jar" sourcepath="/IVY_CACHE/org.easymock/com.springsource.org.easymock/2.3.0/com.springsource.org.easymock-sources-2.3.0.jar"/>

 	<classpathentry kind="var" path="IVY_CACHE/org.eclipse.virgo.mirrored/org.eclipse.equinox.event/1.3.100.v20140115-1647/org.eclipse.equinox.event-1.3.100.v20140115-1647.jar" sourcepath="/IVY_CACHE/org.eclipse.virgo.mirrored/org.eclipse.equinox.event/1.3.100.v20140115-1647/org.eclipse.equinox.event-sources-1.3.100.v20140115-1647.jar"/>

diff --git a/org.eclipse.gemini.web.test/.classpath b/org.eclipse.gemini.web.test/.classpath
index ca7184c..a1fc6f8 100644
--- a/org.eclipse.gemini.web.test/.classpath
+++ b/org.eclipse.gemini.web.test/.classpath
@@ -13,12 +13,12 @@
 	<classpathentry kind="var" path="IVY_CACHE/org.eclipse.virgo.util/org.eclipse.virgo.util.parser.launcher/3.7.0.D-20140919122012/org.eclipse.virgo.util.parser.launcher-3.7.0.D-20140919122012.jar"/>
 	<classpathentry kind="var" path="IVY_CACHE/org.eclipse.virgo.test/org.eclipse.virgo.test.launcher/3.7.0.BUILD-20150104200311/org.eclipse.virgo.test.launcher-3.7.0.BUILD-20150104200311.jar"/>
 	<classpathentry kind="var" path="IVY_CACHE/org.eclipse.virgo.mirrored/org.slf4j.api/1.7.2.v20121108-1250/org.slf4j.api-1.7.2.v20121108-1250.jar" sourcepath="/IVY_CACHE/org.eclipse.virgo.mirrored/org.slf4j.api/1.7.2.v20121108-1250/org.slf4j.api-sources-1.7.2.v20121108-1250.jar"/>
-	<classpathentry kind="var" path="IVY_CACHE/org.eclipse.virgo.mirrored/org.apache.catalina/8.0.21/org.apache.catalina-8.0.21.jar" sourcepath="/IVY_CACHE/org.eclipse.virgo.mirrored/org.apache.catalina/8.0.21/org.apache.catalina.source-8.0.21.jar"/>
-	<classpathentry kind="var" path="IVY_CACHE/org.eclipse.virgo.mirrored/org.apache.juli/8.0.21/org.apache.juli-8.0.21.jar" sourcepath="/IVY_CACHE/org.eclipse.virgo.mirrored/org.apache.juli/8.0.21/org.apache.juli.source-8.0.21.jar"/>
-	<classpathentry kind="var" path="IVY_CACHE/org.eclipse.virgo.mirrored/org.apache.jasper/8.0.21/org.apache.jasper-8.0.21.jar" sourcepath="/IVY_CACHE/org.eclipse.virgo.mirrored/org.apache.jasper/8.0.21/org.apache.jasper.source-8.0.21.jar"/>
-	<classpathentry kind="var" path="IVY_CACHE/org.eclipse.virgo.mirrored/org.apache.catalina.ha/8.0.21/org.apache.catalina.ha-8.0.21.jar" sourcepath="/IVY_CACHE/org.eclipse.virgo.mirrored/org.apache.catalina.ha/8.0.21/org.apache.catalina.ha.source-8.0.21.jar"/>
-	<classpathentry kind="var" path="IVY_CACHE/org.eclipse.virgo.mirrored/org.apache.catalina.tribes/8.0.21/org.apache.catalina.tribes-8.0.21.jar" sourcepath="/IVY_CACHE/org.eclipse.virgo.mirrored/org.apache.catalina.tribes/8.0.21/org.apache.catalina.tribes.source-8.0.21.jar"/>
-	<classpathentry kind="var" path="IVY_CACHE/org.eclipse.virgo.mirrored/org.apache.coyote/8.0.21/org.apache.coyote-8.0.21.jar" sourcepath="/IVY_CACHE/org.eclipse.virgo.mirrored/org.apache.coyote/8.0.21/org.apache.coyote.source-8.0.21.jar"/>
+	<classpathentry kind="var" path="IVY_CACHE/org.eclipse.virgo.mirrored/org.apache.catalina/8.5.5/org.apache.catalina-8.5.5.jar" sourcepath="/IVY_CACHE/org.eclipse.virgo.mirrored/org.apache.catalina/8.5.5/org.apache.catalina.source-8.5.5.jar"/>
+	<classpathentry kind="var" path="IVY_CACHE/org.eclipse.virgo.mirrored/org.apache.juli/8.5.5/org.apache.juli-8.5.5.jar" sourcepath="/IVY_CACHE/org.eclipse.virgo.mirrored/org.apache.juli/8.5.5/org.apache.juli.source-8.5.5.jar"/>
+	<classpathentry kind="var" path="IVY_CACHE/org.eclipse.virgo.mirrored/org.apache.jasper/8.5.5/org.apache.jasper-8.5.5.jar" sourcepath="/IVY_CACHE/org.eclipse.virgo.mirrored/org.apache.jasper/8.5.5/org.apache.jasper.source-8.5.5.jar"/>
+	<classpathentry kind="var" path="IVY_CACHE/org.eclipse.virgo.mirrored/org.apache.catalina.ha/8.5.5/org.apache.catalina.ha-8.5.5.jar" sourcepath="/IVY_CACHE/org.eclipse.virgo.mirrored/org.apache.catalina.ha/8.5.5/org.apache.catalina.ha.source-8.5.5.jar"/>
+	<classpathentry kind="var" path="IVY_CACHE/org.eclipse.virgo.mirrored/org.apache.catalina.tribes/8.5.5/org.apache.catalina.tribes-8.5.5.jar" sourcepath="/IVY_CACHE/org.eclipse.virgo.mirrored/org.apache.catalina.tribes/8.5.5/org.apache.catalina.tribes.source-8.5.5.jar"/>
+	<classpathentry kind="var" path="IVY_CACHE/org.eclipse.virgo.mirrored/org.apache.coyote/8.5.5/org.apache.coyote-8.5.5.jar" sourcepath="/IVY_CACHE/org.eclipse.virgo.mirrored/org.apache.coyote/8.5.5/org.apache.coyote.source-8.5.5.jar"/>
 	<classpathentry kind="var" path="IVY_CACHE/org.eclipse.virgo.mirrored/javax.servlet/3.1.0.20150414/javax.servlet-3.1.0.20150414.jar" sourcepath="/IVY_CACHE/org.eclipse.virgo.mirrored/javax.servlet/3.1.0.20150414/javax.servlet-sources-3.1.0.20150414.jar"/>
 	<classpathentry kind="var" path="IVY_CACHE/org.eclipse.virgo.mirrored/javax.websocket/1.1.0.v201401130840/javax.websocket-1.1.0.v201401130840.jar"/>
 	<classpathentry kind="var" path="IVY_CACHE/org.easymock/com.springsource.org.easymock/2.3.0/com.springsource.org.easymock-2.3.0.jar" sourcepath="/IVY_CACHE/org.easymock/com.springsource.org.easymock/2.3.0/com.springsource.org.easymock-sources-2.3.0.jar"/>
diff --git a/org.eclipse.gemini.web.test/ivy.xml b/org.eclipse.gemini.web.test/ivy.xml
index c1ef25e..413aecb 100644
--- a/org.eclipse.gemini.web.test/ivy.xml
+++ b/org.eclipse.gemini.web.test/ivy.xml
@@ -35,6 +35,7 @@
            
            <dependency org="org.eclipse.virgo.mirrored" name="com.springsource.org.apache.taglibs.standard" rev="${org.apache.taglibs}" conf="test->runtime"/>
            <dependency org="org.eclipse.virgo.mirrored" name="javax.servlet.jsp.jstl" rev="${javax.servlet.jstl}" conf="test->runtime"/>
+           <dependency org="org.eclipse.virgo.mirrored" name="javax.security.auth.message" rev="${javax.security.auth.message}" conf="test->runtime"/>
            <dependency org="org.eclipse.virgo.mirrored" name="javax.xml.soap" rev="${javax.xml.soap}" conf="test->runtime"/>
            <dependency org="org.eclipse.virgo.mirrored" name="javax.mail" rev="${javax.mail}" conf="test->runtime"/>
            <dependency org="org.eclipse.virgo.mirrored" name="javax.websocket" rev="${javax.websocket}" conf="test->runtime"/>
diff --git a/org.eclipse.gemini.web.test/src/test/resources/META-INF/test.config.properties b/org.eclipse.gemini.web.test/src/test/resources/META-INF/test.config.properties
index c99c1fc..c454ebe 100644
--- a/org.eclipse.gemini.web.test/src/test/resources/META-INF/test.config.properties
+++ b/org.eclipse.gemini.web.test/src/test/resources/META-INF/test.config.properties
@@ -14,6 +14,7 @@
 file:${ivy.cache}/repository/org.eclipse.virgo.mirrored/javax.persistence/${javax.persistence}/javax.persistence-${javax.persistence}.jar@start,\
 file:${ivy.cache}/repository/org.eclipse.virgo.mirrored/javax.servlet.jsp/${javax.servlet.jsp}/javax.servlet.jsp-${javax.servlet.jsp}.jar@start,\
 file:${ivy.cache}/repository/org.eclipse.virgo.mirrored/javax.servlet/${javax.servlet}/javax.servlet-${javax.servlet}.jar@start,\
+file:${ivy.cache}/repository/org.eclipse.virgo.mirrored/javax.security.auth.message/${javax.security.auth.message}/javax.security.auth.message-${javax.security.auth.message}.jar@start,\
 file:${ivy.cache}/repository/org.eclipse.virgo.mirrored/javax.xml.rpc/${javax.xml.rpc}/javax.xml.rpc-${javax.xml.rpc}.jar@start,\
 file:${ivy.cache}/repository/org.eclipse.virgo.mirrored/javax.xml.soap/${javax.xml.soap}/javax.xml.soap-${javax.xml.soap}.jar@start,\
 file:${ivy.cache}/repository/org.eclipse.virgo.mirrored/javax.websocket/${javax.websocket}/javax.websocket-${javax.websocket}.jar@start,\
diff --git a/org.eclipse.gemini.web.tomcat/.classpath b/org.eclipse.gemini.web.tomcat/.classpath
index e006d57..b9814b2 100644
--- a/org.eclipse.gemini.web.tomcat/.classpath
+++ b/org.eclipse.gemini.web.tomcat/.classpath
@@ -26,16 +26,16 @@
 	<classpathentry kind="var" path="IVY_CACHE/org.eclipse.virgo.util/org.eclipse.virgo.util.osgi/3.6.3.RELEASE/org.eclipse.virgo.util.osgi-3.6.3.RELEASE.jar" sourcepath="/IVY_CACHE/org.eclispe.virgo.util/org.eclipse.virgo.util.osgi/3.6.3.RELEASE/org.eclipse.virgo.util.osgi-sources-3.6.3.RELEASE.jar"/>

 	<classpathentry kind="var" path="IVY_CACHE/org.eclipse.virgo.util/org.eclipse.virgo.util.common/3.6.3.RELEASE/org.eclipse.virgo.util.common-3.6.3.RELEASE.jar" sourcepath="/IVY_CACHE/org.eclispe.virgo.util/org.eclipse.virgo.util.common/3.6.3.RELEASE/org.eclipse.virgo.util.common-sources-3.6.3.RELEASE.jar"/>

 	<classpathentry kind="var" path="IVY_CACHE/org.eclipse.virgo.mirrored/org.slf4j.api/1.7.2.v20121108-1250/org.slf4j.api-1.7.2.v20121108-1250.jar" sourcepath="/IVY_CACHE/org.eclipse.virgo.mirrored/org.slf4j.api/1.7.2.v20121108-1250/org.slf4j.api-sources-1.7.2.v20121108-1250.jar"/>

-	<classpathentry kind="var" path="IVY_CACHE/org.eclipse.virgo.mirrored/org.apache.catalina/8.0.21/org.apache.catalina-8.0.21.jar" sourcepath="/IVY_CACHE/org.eclipse.virgo.mirrored/org.apache.catalina/8.0.21/org.apache.catalina.source-8.0.21.jar"/>

-	<classpathentry kind="var" path="IVY_CACHE/org.eclipse.virgo.mirrored/org.apache.juli/8.0.21/org.apache.juli-8.0.21.jar" sourcepath="/IVY_CACHE/org.eclipse.virgo.mirrored/org.apache.juli/8.0.21/org.apache.juli.source-8.0.21.jar"/>

-	<classpathentry kind="var" path="IVY_CACHE/org.eclipse.virgo.mirrored/org.apache.jasper/8.0.21/org.apache.jasper-8.0.21.jar" sourcepath="/IVY_CACHE/org.eclipse.virgo.mirrored/org.apache.jasper/8.0.21/org.apache.jasper.source-8.0.21.jar"/>

-	<classpathentry kind="var" path="IVY_CACHE/org.eclipse.virgo.mirrored/org.apache.catalina.ha/8.0.21/org.apache.catalina.ha-8.0.21.jar" sourcepath="/IVY_CACHE/org.eclipse.virgo.mirrored/org.apache.catalina.ha/8.0.21/org.apache.catalina.ha.source-8.0.21.jar"/>

-	<classpathentry kind="var" path="IVY_CACHE/org.eclipse.virgo.mirrored/org.apache.catalina.tribes/8.0.21/org.apache.catalina.tribes-8.0.21.jar" sourcepath="/IVY_CACHE/org.eclipse.virgo.mirrored/org.apache.catalina.tribes/8.0.21/org.apache.catalina.tribes.source-8.0.21.jar"/>

-	<classpathentry kind="var" path="IVY_CACHE/org.eclipse.virgo.mirrored/org.apache.coyote/8.0.21/org.apache.coyote-8.0.21.jar" sourcepath="/IVY_CACHE/org.eclipse.virgo.mirrored/org.apache.coyote/8.0.21/org.apache.coyote.source-8.0.21.jar"/>

-	<classpathentry kind="var" path="IVY_CACHE/org.eclipse.virgo.mirrored/org.apache.tomcat.api/8.0.21/org.apache.tomcat.api-8.0.21.jar" sourcepath="/IVY_CACHE/org.eclipse.virgo.mirrored/org.apache.tomcat.api/8.0.21/org.apache.tomcat.api.source-8.0.21.jar"/>

-	<classpathentry kind="var" path="IVY_CACHE/org.eclipse.virgo.mirrored/org.apache.tomcat.util/8.0.21/org.apache.tomcat.util-8.0.21.jar" sourcepath="/IVY_CACHE/org.eclipse.virgo.mirrored/org.apache.tomcat.util/8.0.21/org.apache.tomcat.util.source-8.0.21.jar"/>

-	<classpathentry kind="var" path="IVY_CACHE/org.eclipse.virgo.mirrored/org.apache.tomcat.util.scan/8.0.21/org.apache.tomcat.util.scan-8.0.21.jar" sourcepath="/IVY_CACHE/org.eclipse.virgo.mirrored/org.apache.tomcat.util.scan/8.0.21/org.apache.tomcat.util.scan.source-8.0.21.jar"/>

-	<classpathentry kind="var" path="IVY_CACHE/org.eclipse.virgo.mirrored/org.apache.tomcat.websocket/8.0.21/org.apache.tomcat.websocket-8.0.21.jar" sourcepath="/IVY_CACHE/org.eclipse.virgo.mirrored/org.apache.tomcat.websocket/8.0.21/org.apache.tomcat.websocket.source-8.0.21.jar"/>

+	<classpathentry kind="var" path="IVY_CACHE/org.eclipse.virgo.mirrored/org.apache.catalina/8.5.5/org.apache.catalina-8.5.5.jar" sourcepath="/IVY_CACHE/org.eclipse.virgo.mirrored/org.apache.catalina/8.5.5/org.apache.catalina.source-8.5.5.jar"/>

+	<classpathentry kind="var" path="IVY_CACHE/org.eclipse.virgo.mirrored/org.apache.juli/8.5.5/org.apache.juli-8.5.5.jar" sourcepath="/IVY_CACHE/org.eclipse.virgo.mirrored/org.apache.juli/8.5.5/org.apache.juli.source-8.5.5.jar"/>

+	<classpathentry kind="var" path="IVY_CACHE/org.eclipse.virgo.mirrored/org.apache.jasper/8.5.5/org.apache.jasper-8.5.5.jar" sourcepath="/IVY_CACHE/org.eclipse.virgo.mirrored/org.apache.jasper/8.5.5/org.apache.jasper.source-8.5.5.jar"/>

+	<classpathentry kind="var" path="IVY_CACHE/org.eclipse.virgo.mirrored/org.apache.catalina.ha/8.5.5/org.apache.catalina.ha-8.5.5.jar" sourcepath="/IVY_CACHE/org.eclipse.virgo.mirrored/org.apache.catalina.ha/8.5.5/org.apache.catalina.ha.source-8.5.5.jar"/>

+	<classpathentry kind="var" path="IVY_CACHE/org.eclipse.virgo.mirrored/org.apache.catalina.tribes/8.5.5/org.apache.catalina.tribes-8.5.5.jar" sourcepath="/IVY_CACHE/org.eclipse.virgo.mirrored/org.apache.catalina.tribes/8.5.5/org.apache.catalina.tribes.source-8.5.5.jar"/>

+	<classpathentry kind="var" path="IVY_CACHE/org.eclipse.virgo.mirrored/org.apache.coyote/8.5.5/org.apache.coyote-8.5.5.jar" sourcepath="/IVY_CACHE/org.eclipse.virgo.mirrored/org.apache.coyote/8.5.5/org.apache.coyote.source-8.5.5.jar"/>

+	<classpathentry kind="var" path="IVY_CACHE/org.eclipse.virgo.mirrored/org.apache.tomcat.api/8.5.5/org.apache.tomcat.api-8.5.5.jar" sourcepath="/IVY_CACHE/org.eclipse.virgo.mirrored/org.apache.tomcat.api/8.5.5/org.apache.tomcat.api.source-8.5.5.jar"/>

+	<classpathentry kind="var" path="IVY_CACHE/org.eclipse.virgo.mirrored/org.apache.tomcat.util/8.5.5/org.apache.tomcat.util-8.5.5.jar" sourcepath="/IVY_CACHE/org.eclipse.virgo.mirrored/org.apache.tomcat.util/8.5.5/org.apache.tomcat.util.source-8.5.5.jar"/>

+	<classpathentry kind="var" path="IVY_CACHE/org.eclipse.virgo.mirrored/org.apache.tomcat.util.scan/8.5.5/org.apache.tomcat.util.scan-8.5.5.jar" sourcepath="/IVY_CACHE/org.eclipse.virgo.mirrored/org.apache.tomcat.util.scan/8.5.5/org.apache.tomcat.util.scan.source-8.5.5.jar"/>

+	<classpathentry kind="var" path="IVY_CACHE/org.eclipse.virgo.mirrored/org.apache.tomcat.websocket/8.5.5/org.apache.tomcat.websocket-8.5.5.jar" sourcepath="/IVY_CACHE/org.eclipse.virgo.mirrored/org.apache.tomcat.websocket/8.5.5/org.apache.tomcat.websocket.source-8.5.5.jar"/>

 	<classpathentry kind="var" path="IVY_CACHE/org.eclipse.virgo.mirrored/javax.servlet/3.1.0.20150414/javax.servlet-3.1.0.20150414.jar" sourcepath="/IVY_CACHE/org.eclipse.virgo.mirrored/javax.servlet/3.1.0.20150414/javax.servlet-sources-3.1.0.20150414.jar"/>

 	<classpathentry kind="var" path="IVY_CACHE/org.easymock/com.springsource.org.easymock/2.3.0/com.springsource.org.easymock-2.3.0.jar" sourcepath="/IVY_CACHE/org.easymock/com.springsource.org.easymock/2.3.0/com.springsource.org.easymock-sources-2.3.0.jar"/>

 	<classpathentry combineaccessrules="false" kind="src" path="/org.eclipse.gemini.web.core"/>

diff --git a/org.eclipse.gemini.web.tomcat/src/main/java/org/eclipse/gemini/web/tomcat/internal/BundleDependenciesJarScanner.java b/org.eclipse.gemini.web.tomcat/src/main/java/org/eclipse/gemini/web/tomcat/internal/BundleDependenciesJarScanner.java
index 2ac1451..334cbae 100644
--- a/org.eclipse.gemini.web.tomcat/src/main/java/org/eclipse/gemini/web/tomcat/internal/BundleDependenciesJarScanner.java
+++ b/org.eclipse.gemini.web.tomcat/src/main/java/org/eclipse/gemini/web/tomcat/internal/BundleDependenciesJarScanner.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2009, 2015 VMware Inc.
+ * Copyright (c) 2009, 2016 VMware Inc.
  *
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
@@ -18,21 +18,21 @@
 
 import java.io.File;
 import java.io.IOException;
-import java.net.JarURLConnection;
 import java.net.MalformedURLException;
 import java.net.URI;
 import java.net.URISyntaxException;
 import java.net.URL;
-import java.net.URLConnection;
 import java.util.Set;
 
 import javax.servlet.ServletContext;
 
 import org.apache.jasper.servlet.JasperInitializer;
+import org.apache.tomcat.Jar;
 import org.apache.tomcat.JarScanFilter;
 import org.apache.tomcat.JarScanType;
 import org.apache.tomcat.JarScanner;
 import org.apache.tomcat.JarScannerCallback;
+import org.apache.tomcat.util.scan.JarFactory;
 import org.apache.tomcat.websocket.server.WsSci;
 import org.eclipse.gemini.web.tomcat.internal.loader.BundleWebappClassLoader;
 import org.eclipse.gemini.web.tomcat.internal.support.BundleDependencyDeterminer;
@@ -172,14 +172,12 @@
     }
 
     private void scanBundleUrl(URL url, JarScannerCallback callback, boolean isWebapp) {
-        try {
-            URLConnection connection = url.openConnection();
-
-            if (connection instanceof JarURLConnection) {
-                callback.scan((JarURLConnection) connection, null, isWebapp);
+        if ("jar".equals(url.getProtocol()) || url.getPath().endsWith(".jar")) {
+            try (Jar jar = JarFactory.newInstance(url)) {
+                callback.scan(jar, null, isWebapp);
+            } catch (IOException e) {
+                LOGGER.warn("Failure when attempting to scan bundle via jar URL [" + url + "].", e);
             }
-        } catch (IOException e) {
-            LOGGER.warn("Failure when attempting to scan bundle via jar URL [" + url + "].", e);
         }
     }
 }
diff --git a/org.eclipse.gemini.web.tomcat/src/main/java/org/eclipse/gemini/web/tomcat/internal/bundleresources/BundleJarResourceSet.java b/org.eclipse.gemini.web.tomcat/src/main/java/org/eclipse/gemini/web/tomcat/internal/bundleresources/BundleJarResourceSet.java
index 6ef050d..673291a 100644
--- a/org.eclipse.gemini.web.tomcat/src/main/java/org/eclipse/gemini/web/tomcat/internal/bundleresources/BundleJarResourceSet.java
+++ b/org.eclipse.gemini.web.tomcat/src/main/java/org/eclipse/gemini/web/tomcat/internal/bundleresources/BundleJarResourceSet.java
@@ -1,5 +1,5 @@
 /*******************************************************************************

- * Copyright (c) 2015 SAP SE

+ * Copyright (c) 2015, 2016 SAP SE

  *

  * All rights reserved. This program and the accompanying materials

  * are made available under the terms of the Eclipse Public License v1.0

@@ -19,6 +19,7 @@
 import java.io.IOException;

 import java.net.URL;

 import java.net.URLConnection;

+import java.util.HashMap;

 import java.util.jar.JarEntry;

 import java.util.jar.JarInputStream;

 import java.util.jar.Manifest;

@@ -51,11 +52,6 @@
         }

 

         try (JarInputStream jarIs = new JarInputStream(conn.getInputStream())) {

-            JarEntry entry = jarIs.getNextJarEntry();

-            while (entry != null) {

-                getJarFileEntries().put(entry.getName(), entry);

-                entry = jarIs.getNextJarEntry();

-            }

             setManifest(jarIs.getManifest());

         } catch (IOException ioe) {

             throw new IllegalArgumentException(ioe);

@@ -63,4 +59,60 @@
 

         setBaseUrl(baseUrl);

     }

+

+    @Override

+    protected HashMap<String,JarEntry> getArchiveEntries(boolean single) {

+        synchronized (archiveLock) {

+            if (archiveEntries == null && !single) {

+                URLConnection conn = null;

+                URL baseUrl = null;

+                try {

+                    baseUrl = new URL(getBase());

+                    conn = baseUrl.openConnection();

+                } catch (IOException e) {

+                    throw new IllegalArgumentException(e);

+                }

+

+                archiveEntries = new HashMap<>();

+                try (JarInputStream jarIs = new JarInputStream(conn.getInputStream())) {

+                    JarEntry entry = jarIs.getNextJarEntry();

+                    while (entry != null) {

+                        archiveEntries.put(entry.getName(), entry);

+                        entry = jarIs.getNextJarEntry();

+                    }

+                } catch (IOException ioe) {

+                    // Should never happen

+                    archiveEntries = null;

+                    throw new IllegalStateException(ioe);

+                }

+            }

+            return archiveEntries;

+        }

+    }

+

+    @Override

+    protected JarEntry getArchiveEntry(String pathInArchive) {

+        URLConnection conn = null;

+        URL baseUrl = null;

+        try {

+            baseUrl = new URL(getBase());

+            conn = baseUrl.openConnection();

+        } catch (IOException e) {

+            throw new IllegalArgumentException(e);

+        }

+

+        JarEntry entry = null;

+        try (JarInputStream jarIs = new JarInputStream(conn.getInputStream())) {

+            entry = jarIs.getNextJarEntry();

+            while (entry != null && !entry.getName().equals(pathInArchive)) {

+                entry = jarIs.getNextJarEntry();

+            }

+

+            return entry;

+        } catch (IOException ioe) {

+            // Should never happen

+            throw new IllegalStateException(ioe);

+        }

+    }

+

 }

diff --git a/org.eclipse.gemini.web.tomcat/src/main/java/org/eclipse/gemini/web/tomcat/internal/bundleresources/BundleWebResource.java b/org.eclipse.gemini.web.tomcat/src/main/java/org/eclipse/gemini/web/tomcat/internal/bundleresources/BundleWebResource.java
index 532a40c..e90a6b8 100644
--- a/org.eclipse.gemini.web.tomcat/src/main/java/org/eclipse/gemini/web/tomcat/internal/bundleresources/BundleWebResource.java
+++ b/org.eclipse.gemini.web.tomcat/src/main/java/org/eclipse/gemini/web/tomcat/internal/bundleresources/BundleWebResource.java
@@ -19,6 +19,7 @@
 import java.io.File;
 import java.io.IOException;
 import java.io.InputStream;
+import java.net.MalformedURLException;
 import java.net.URL;
 import java.nio.file.Path;
 import java.nio.file.Paths;
@@ -37,6 +38,7 @@
 import org.apache.catalina.WebResourceRoot;
 import org.apache.catalina.webresources.AbstractResource;
 import org.apache.juli.logging.Log;
+import org.apache.tomcat.util.buf.UriUtil;
 import org.eclipse.gemini.web.tomcat.internal.support.BundleFileResolver;
 import org.eclipse.gemini.web.tomcat.internal.support.BundleFileResolverFactory;
 import org.osgi.framework.Bundle;
@@ -251,6 +253,14 @@
         if (this.url == null) {
             this.url = getEntryFromBundle(this.path);
         }
+        String urlStr = this.url.toString();
+        if (urlStr.endsWith(".jar")) {
+            try {
+                this.url = UriUtil.buildJarUrl(urlStr);
+            } catch (MalformedURLException e) {
+                throw new IllegalArgumentException(e);
+            }
+        }
         return this.url;
     }
 
diff --git a/org.eclipse.gemini.web.tomcat/src/test/java/org/eclipse/gemini/web/tomcat/internal/BundleDependenciesJarScannerTests.java b/org.eclipse.gemini.web.tomcat/src/test/java/org/eclipse/gemini/web/tomcat/internal/BundleDependenciesJarScannerTests.java
index a52d353..1cb734f 100644
--- a/org.eclipse.gemini.web.tomcat/src/test/java/org/eclipse/gemini/web/tomcat/internal/BundleDependenciesJarScannerTests.java
+++ b/org.eclipse.gemini.web.tomcat/src/test/java/org/eclipse/gemini/web/tomcat/internal/BundleDependenciesJarScannerTests.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2009, 2015 VMware Inc.
+ * Copyright (c) 2009, 2016 VMware Inc.
  *
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
@@ -27,7 +27,6 @@
 
 import java.io.File;
 import java.io.IOException;
-import java.net.JarURLConnection;
 import java.net.URLClassLoader;
 import java.util.Arrays;
 import java.util.Collections;
@@ -35,6 +34,7 @@
 
 import javax.servlet.ServletContext;
 
+import org.apache.tomcat.Jar;
 import org.apache.tomcat.JarScannerCallback;
 import org.eclipse.gemini.web.tomcat.internal.loader.BundleWebappClassLoader;
 import org.eclipse.gemini.web.tomcat.internal.support.BundleDependencyDeterminer;
@@ -106,9 +106,9 @@
     public void scanFile() throws IOException {
         expect(this.dependencyDeterminer.getDependencies(this.bundle)).andReturn(new HashSet<>(Arrays.asList(this.dependency)));
 
-        File dependencyFile = new File("");
+        File dependencyFile = new File("./src/test/resources/bundle.jar");
         expect(this.bundleFileResolver.resolve(this.dependency)).andReturn(dependencyFile);
-        this.callback.scan(isA(JarURLConnection.class), (String) isNull(), eq(true));
+        this.callback.scan(isA(Jar.class), (String) isNull(), eq(true));
 
         ClassLoader classLoader = new BundleWebappClassLoader(this.bundle, this.classLoaderCustomizer);
         expect(this.servletContext.getClassLoader()).andReturn(classLoader);
@@ -125,12 +125,12 @@
     @Test
     public void scanJarUrlConnection() throws IOException {
         expect(this.dependencyDeterminer.getDependencies(this.bundle)).andReturn(new HashSet<>(Arrays.asList(this.dependency))).times(2);
-        expect(this.dependency.getLocation()).andReturn("file:src/test/resources/bundle.jar").andReturn(
-            "reference:file:src/test/resources/bundle.jar");
+        String bundleLocation = new File("./src/test/resources/bundle.jar").toURI().toString();
+        expect(this.dependency.getLocation()).andReturn(bundleLocation).andReturn("reference:" + bundleLocation);
         expect(this.dependency.getSymbolicName()).andReturn("bundle").anyTimes();
 
         expect(this.bundleFileResolver.resolve(this.dependency)).andReturn(null).times(2);
-        this.callback.scan(isA(JarURLConnection.class), (String) isNull(), eq(true));
+        this.callback.scan(isA(Jar.class), (String) isNull(), eq(true));
 
         ClassLoader classLoader = new BundleWebappClassLoader(this.bundle, this.classLoaderCustomizer);
         expect(this.servletContext.getClassLoader()).andReturn(classLoader).times(2);
diff --git a/org.eclipse.gemini.web.tomcat/src/test/resources/bundle.jar b/org.eclipse.gemini.web.tomcat/src/test/resources/bundle.jar
new file mode 100644
index 0000000..6f8e200
--- /dev/null
+++ b/org.eclipse.gemini.web.tomcat/src/test/resources/bundle.jar
Binary files differ
diff --git a/test-bundles/customizer-bundle/.classpath b/test-bundles/customizer-bundle/.classpath
index 60bd826..c31d433 100755
--- a/test-bundles/customizer-bundle/.classpath
+++ b/test-bundles/customizer-bundle/.classpath
@@ -3,8 +3,9 @@
 	<classpathentry kind="src" path="src/main/java"/>

 	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>

 	<classpathentry combineaccessrules="false" kind="src" path="/org.eclipse.gemini.web.tomcat"/>

-	<classpathentry kind="var" path="IVY_CACHE/org.eclipse.virgo.mirrored/org.apache.tomcat.api/8.0.18/org.apache.tomcat.api-8.0.18.jar" sourcepath="/IVY_CACHE/org.eclipse.virgo.mirrored/org.apache.tomcat.api/8.0.18/org.apache.tomcat.api.source-8.0.18.jar"/>

+	<classpathentry kind="var" path="IVY_CACHE/org.eclipse.virgo.mirrored/org.apache.tomcat.api/8.5.5/org.apache.tomcat.api-8.5.5.jar" sourcepath="/IVY_CACHE/org.eclipse.virgo.mirrored/org.apache.tomcat.api/8.5.5/org.apache.tomcat.api.source-8.5.5.jar"/>

+	<classpathentry kind="var" path="IVY_CACHE/org.eclipse.virgo.mirrored/org.apache.tomcat.util.scan/8.5.5/org.apache.tomcat.util.scan-8.5.5.jar" sourcepath="/IVY_CACHE/org.eclipse.virgo.mirrored/org.apache.tomcat.util.scan/8.5.5/org.apache.tomcat.util.scan.source-8.5.5.jar"/>

 	<classpathentry kind="var" path="IVY_CACHE/org.eclipse.virgo.mirrored/org.eclipse.osgi/3.10.0.v20140606-1445/org.eclipse.osgi-3.10.0.v20140606-1445.jar" sourcepath="/IVY_CACHE/org.eclipse.virgo.mirrored/org.eclipse.osgi/3.10.0.v20140606-1445/org.eclipse.osgi.source-3.10.0.v20140606-1445.jar"/>

-	<classpathentry kind="var" path="IVY_CACHE/org.eclipse.virgo.mirrored/javax.servlet/3.1.0/javax.servlet-3.1.0.jar" sourcepath="/IVY_CACHE/org.eclipse.virgo.mirrored/javax.servlet/3.1.0/javax.servlet-sources-3.1.0.jar"/>

+	<classpathentry kind="var" path="IVY_CACHE/org.eclipse.virgo.mirrored/javax.servlet/3.1.0.20150414/javax.servlet-3.1.0.20150414.jar" sourcepath="/IVY_CACHE/org.eclipse.virgo.mirrored/javax.servlet/3.1.0.20150414/javax.servlet-sources-3.1.0.20150414.jar"/>

 	<classpathentry kind="output" path="target"/>

 </classpath>

diff --git a/test-bundles/customizer-bundle/ivy.xml b/test-bundles/customizer-bundle/ivy.xml
index 318bf0f..2362bce 100755
--- a/test-bundles/customizer-bundle/ivy.xml
+++ b/test-bundles/customizer-bundle/ivy.xml
@@ -19,6 +19,7 @@
     <dependencies>
 		<dependency org="org.eclipse.virgo.mirrored" name="javax.servlet" rev="${javax.servlet}" conf="compile->runtime"/>
 		<dependency org="org.eclipse.virgo.mirrored" name="org.apache.tomcat.api" rev="${org.apache.catalina}" conf="compile->runtime"/>
+		<dependency org="org.eclipse.virgo.mirrored" name="org.apache.tomcat.util.scan" rev="${org.apache.catalina}" conf="compile->runtime"/>
 		<dependency org="org.eclipse.virgo.mirrored" name="org.eclipse.osgi" rev="${org.eclipse.osgi}" conf="compile->runtime"/>
 		<dependency org="org.eclipse.gemini" name="org.eclipse.gemini.web.tomcat" rev="latest.integration" conf="compile->runtime"/>
     </dependencies>
diff --git a/test-bundles/customizer-bundle/src/main/java/org/eclipse/gemini/web/BundleJarScanner.java b/test-bundles/customizer-bundle/src/main/java/org/eclipse/gemini/web/BundleJarScanner.java
index e3a7615..5d05dfd 100755
--- a/test-bundles/customizer-bundle/src/main/java/org/eclipse/gemini/web/BundleJarScanner.java
+++ b/test-bundles/customizer-bundle/src/main/java/org/eclipse/gemini/web/BundleJarScanner.java
@@ -1,5 +1,5 @@
 /*******************************************************************************

- * Copyright (c) 2012, 2015 SAP SE

+ * Copyright (c) 2012, 2016 SAP SE

  *

  * All rights reserved. This program and the accompanying materials

  * are made available under the terms of the Eclipse Public License v1.0

@@ -18,17 +18,17 @@
 

 import java.io.File;

 import java.io.IOException;

-import java.net.JarURLConnection;

 import java.net.MalformedURLException;

 import java.net.URL;

-import java.net.URLConnection;

 

 import javax.servlet.ServletContext;

 

+import org.apache.tomcat.Jar;

 import org.apache.tomcat.JarScanFilter;

 import org.apache.tomcat.JarScanType;

 import org.apache.tomcat.JarScanner;

 import org.apache.tomcat.JarScannerCallback;

+import org.apache.tomcat.util.scan.JarFactory;

 import org.eclipse.osgi.internal.framework.EquinoxBundle;

 import org.eclipse.osgi.storage.BundleInfo.Generation;

 import org.eclipse.osgi.storage.bundlefile.BundleFile;

@@ -108,14 +108,12 @@
     }

 

     private void scanBundleUrl(URL url, JarScannerCallback callback) {

-        try {

-            URLConnection connection = url.openConnection();

-

-            if (connection instanceof JarURLConnection) {

-                callback.scan((JarURLConnection) connection, null, true);

+        if ("jar".equals(url.getProtocol()) || url.getPath().endsWith(".jar")) {

+            try (Jar jar = JarFactory.newInstance(url)) {

+                callback.scan(jar, null, true);

+            } catch (IOException e) {

+                System.out.println("Failure when attempting to scan bundle via jar URL '" + url + "':" + e.getMessage());

             }

-        } catch (IOException e) {

-            System.out.println("Failure when attempting to scan bundle via jar URL '" + url + "':" + e.getMessage());

         }

     }

 

diff --git a/test-bundles/customizer-bundle/src/main/resources/META-INF/MANIFEST.MF b/test-bundles/customizer-bundle/src/main/resources/META-INF/MANIFEST.MF
index 6916b68..c70fe2c 100755
--- a/test-bundles/customizer-bundle/src/main/resources/META-INF/MANIFEST.MF
+++ b/test-bundles/customizer-bundle/src/main/resources/META-INF/MANIFEST.MF
@@ -3,6 +3,8 @@
 Bundle-SymbolicName: Customizer-bundle
 Bundle-Version: 1.0.0
 Import-Package: org.apache.tomcat,
+ org.apache.tomcat.util.buf,
+ org.apache.tomcat.util.scan,
  org.eclipse.gemini.web.tomcat.spi,
  org.osgi.framework,
  javax.servlet,