Do not hardcode the usage of org.eclipse.osgi.service.urlconversion.URLConverter
diff --git a/org.eclipse.gemini.web.tomcat/src/main/java/org/eclipse/gemini/web/tomcat/internal/Activator.java b/org.eclipse.gemini.web.tomcat/src/main/java/org/eclipse/gemini/web/tomcat/internal/Activator.java
index b1b3e57..94a4843 100644
--- a/org.eclipse.gemini.web.tomcat/src/main/java/org/eclipse/gemini/web/tomcat/internal/Activator.java
+++ b/org.eclipse.gemini.web.tomcat/src/main/java/org/eclipse/gemini/web/tomcat/internal/Activator.java
@@ -24,7 +24,6 @@
 import org.eclipse.gemini.web.core.WebContainerProperties;
 import org.eclipse.gemini.web.core.spi.ServletContainer;
 import org.eclipse.gemini.web.tomcat.internal.bundleresources.BundleURLStreamHandlerService;
-import org.eclipse.osgi.service.urlconversion.URLConverter;
 import org.eclipse.virgo.util.osgi.ServiceRegistrationTracker;
 import org.osgi.framework.BundleActivator;
 import org.osgi.framework.BundleContext;
@@ -39,8 +38,7 @@
 
     private static final String WAR_PROTOCOL = "war";
 
-    private static final String FILTER = "(&(objectClass=" + URLConverter.class.getName()
-            + ")(protocol=bundleentry))";
+    private static final String FILTER = "(&(objectClass=org.eclipse.osgi.service.urlconversion.URLConverter)(protocol=bundleentry))";
 
     private static final String EXPRESSION_FACTORY = "javax.el.ExpressionFactory";
 
@@ -52,7 +50,7 @@
 
     private TomcatServletContainer container;
 
-    private ServiceTracker<URLConverter, URLConverter> urlConverterTracker;
+    private ServiceTracker<?, ?> urlConverterTracker;
 
     private String oldExpressionFactory;
 
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 43c8bfd..72ab85a 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
@@ -35,7 +35,6 @@
 import org.eclipse.gemini.web.tomcat.internal.loader.BundleWebappClassLoader;
 import org.eclipse.gemini.web.tomcat.internal.support.BundleDependencyDeterminer;
 import org.eclipse.gemini.web.tomcat.internal.support.BundleFileResolver;
-import org.eclipse.osgi.service.urlconversion.URLConverter;
 import org.osgi.framework.Bundle;
 import org.osgi.framework.BundleContext;
 import org.osgi.framework.FrameworkUtil;
@@ -66,12 +65,12 @@
 
     private final BundleFileResolver bundleFileResolver;
 
-    private final ServiceTracker<URLConverter, URLConverter> urlConverterTracker;
+    private final ServiceTracker<?, ?> urlConverterTracker;
 
     private JarScanFilter jarScanFilter;
 
     BundleDependenciesJarScanner(BundleDependencyDeterminer bundleDependencyDeterminer, BundleFileResolver bundleFileResolver,
-        BundleContext bundleContext, ServiceTracker<URLConverter, URLConverter> urlConverterTracker) {
+        BundleContext bundleContext, ServiceTracker<?, ?> urlConverterTracker) {
         this.bundleDependencyDeterminer = bundleDependencyDeterminer;
         this.bundleFileResolver = bundleFileResolver;
         this.jarScanFilter = new BundleDependenciesJarScanFilter(bundleContext);
@@ -124,21 +123,28 @@
         } else {
             URL root = bundle.getEntry("/");
             try {
-                URLConverter converter = this.urlConverterTracker.getService();
-                if (converter != null) {
-                    root = converter.resolve(root);
+                try {
+                    Object converter = this.urlConverterTracker.getService();
+                    if (converter != null) {
+                        root = ((org.eclipse.osgi.service.urlconversion.URLConverter) converter).resolve(root);
+                    }
+                } catch (Exception ignore) {
                 }
-                if ("file".equals(root.getProtocol())) {
-                    scanBundleFile(new File(root.getPath()), callback, isWebapp);
-                } else if ("jar".equals(root.getProtocol())) {
-                    scanBundleUrl(root, callback, isWebapp);
+
+                if (root != null) {
+                    if ("file".equals(root.getProtocol())) {
+                        scanBundleFile(new File(root.getPath()), callback, isWebapp);
+                    } else if ("jar".equals(root.getProtocol())) {
+                        scanBundleUrl(root, callback, isWebapp);
+                    } else {
+                        URL bundleUrl = new URL(JAR_URL_PREFIX + root.toExternalForm() + JAR_URL_SUFFIX);
+                        scanBundleUrl(bundleUrl, callback, isWebapp);
+                    }
                 } else {
-                    URL bundleUrl = new URL(JAR_URL_PREFIX + root.toExternalForm() + JAR_URL_SUFFIX);
-                    scanBundleUrl(bundleUrl, callback, isWebapp);
+                    LOGGER.warn("Failed to scan the bundle [" + bundle + "].");
                 }
             } catch (IOException e) {
                 LOGGER.warn("Failed to scan the bundle location [" + root + "].");
-                return;
             }
         }
     }
diff --git a/org.eclipse.gemini.web.tomcat/src/main/java/org/eclipse/gemini/web/tomcat/internal/OsgiAwareEmbeddedTomcat.java b/org.eclipse.gemini.web.tomcat/src/main/java/org/eclipse/gemini/web/tomcat/internal/OsgiAwareEmbeddedTomcat.java
index db5081a..e4d36ae 100644
--- a/org.eclipse.gemini.web.tomcat/src/main/java/org/eclipse/gemini/web/tomcat/internal/OsgiAwareEmbeddedTomcat.java
+++ b/org.eclipse.gemini.web.tomcat/src/main/java/org/eclipse/gemini/web/tomcat/internal/OsgiAwareEmbeddedTomcat.java
@@ -56,7 +56,6 @@
 import org.eclipse.gemini.web.tomcat.internal.loader.ChainedClassLoader;
 import org.eclipse.gemini.web.tomcat.internal.support.BundleFileResolverFactory;
 import org.eclipse.gemini.web.tomcat.internal.support.PackageAdminBundleDependencyDeterminer;
-import org.eclipse.osgi.service.urlconversion.URLConverter;
 import org.eclipse.virgo.util.osgi.ServiceRegistrationTracker;
 import org.osgi.framework.Bundle;
 import org.osgi.framework.BundleContext;
@@ -121,8 +120,7 @@
 
     private String hostConfigDir;
 
-    OsgiAwareEmbeddedTomcat(BundleContext context,
-            ServiceTracker<URLConverter, URLConverter> urlConverterTracker) {
+    OsgiAwareEmbeddedTomcat(BundleContext context, ServiceTracker<?, ?> urlConverterTracker) {
         this.bundleContext = context;
         this.bundleDependenciesJarScanner = new BundleDependenciesJarScanner(new PackageAdminBundleDependencyDeterminer(),
             BundleFileResolverFactory.createBundleFileResolver(), context, urlConverterTracker);
diff --git a/org.eclipse.gemini.web.tomcat/src/main/java/org/eclipse/gemini/web/tomcat/internal/TomcatServletContainerFactory.java b/org.eclipse.gemini.web.tomcat/src/main/java/org/eclipse/gemini/web/tomcat/internal/TomcatServletContainerFactory.java
index c3eba2e..67ea38f 100644
--- a/org.eclipse.gemini.web.tomcat/src/main/java/org/eclipse/gemini/web/tomcat/internal/TomcatServletContainerFactory.java
+++ b/org.eclipse.gemini.web.tomcat/src/main/java/org/eclipse/gemini/web/tomcat/internal/TomcatServletContainerFactory.java
@@ -18,14 +18,13 @@
 
 import java.io.InputStream;
 
-import org.eclipse.osgi.service.urlconversion.URLConverter;
 import org.osgi.framework.BundleContext;
 import org.osgi.util.tracker.ServiceTracker;
 
 final class TomcatServletContainerFactory {
 
     public TomcatServletContainer createContainer(InputStream configuration, BundleContext context,
-            ServiceTracker<URLConverter, URLConverter> urlConverterTracker) {
+            ServiceTracker<?, ?> urlConverterTracker) {
         OsgiAwareEmbeddedTomcat catalina = new OsgiAwareEmbeddedTomcat(context, urlConverterTracker);
         catalina.configure(configuration);