[ 
https://issues.apache.org/jira/browse/FELIX-842?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Karl Pauls resolved FELIX-842.
------------------------------

    Resolution: Fixed

The WebAppClassloader is creating urls during a classload while we are creating 
url handlers which gets us into a recursive attempt to create a handler 
resulting in the error. I addressed this in trunk by creating a couple of known 
built-in handlers up front (i.e., http, https, ftp, jar, file) which we can 
fallback to in case we get a Linkage-Error while trying to create the handler. 
Furthermore, a couple of classes are forced to be loaded eagerly. 

Thanks again for reporting. This will make it into the upcoming 1.4.1 release. 
Please close this issue if it works for you.

> Linkage-Error when embedding Felix inside Tomcat 6
> --------------------------------------------------
>
>                 Key: FELIX-842
>                 URL: https://issues.apache.org/jira/browse/FELIX-842
>             Project: Felix
>          Issue Type: Bug
>          Components: Framework
>    Affects Versions: felix-1.4.0
>         Environment: Windows XP SP3, Java 1.5.0, Tomcat 6.0
>            Reporter: Daniel Bremer-Tonn
>            Assignee: Karl Pauls
>             Fix For: felix-1.4.1
>
>
> When embedding Felix in Tomcat I get the following Exception on Felix-Startup:
> ERROR: Unable to start system bundle. (java.lang.LinkageError: 
> org/osgi/service/url/URLStreamHandlerService)
> java.lang.LinkageError: org/osgi/service/url/URLStreamHandlerService
>    at java.lang.Class.forName0(Native Method)
>    at java.lang.Class.forName(Class.java:164)
>    at 
> org.apache.felix.framework.URLHandlersStreamHandlerProxy.class$(URLHandlersStreamHandlerProxy.java:77)
>    at 
> org.apache.felix.framework.URLHandlersStreamHandlerProxy.getStreamHandlerService(URLHandlersStreamHandlerProxy.java:391)
>    at 
> org.apache.felix.framework.URLHandlersStreamHandlerProxy.parseURL(URLHandlersStreamHandlerProxy.java:267)
>    at java.net.URL.<init>(URL.java:596)
>    at java.net.URL.<init>(URL.java:464)
>    at java.net.URL.<init>(URL.java:413)
>    at java.net.URI.toURL(URI.java:1081)
>    at 
> org.apache.catalina.loader.WebappClassLoader.getURI(WebappClassLoader.java:2355)
>    at 
> org.apache.catalina.loader.WebappClassLoader.findResourceInternal(WebappClassLoader.java:2008)
>    at 
> org.apache.catalina.loader.WebappClassLoader.findClassInternal(WebappClassLoader.java:1786)
>    at 
> org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.java:890)
>    at 
> org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1354)
>    at 
> org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1233)
>    at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)
>    at java.lang.Class.forName0(Native Method)
>    at java.lang.Class.forName(Class.java:164)
>    at 
> org.apache.felix.framework.URLHandlersStreamHandlerProxy.class$(URLHandlersStreamHandlerProxy.java:77)
>    at 
> org.apache.felix.framework.URLHandlersStreamHandlerProxy.getStreamHandlerService(URLHandlersStreamHandlerProxy.java:391)
>    at 
> org.apache.felix.framework.URLHandlersStreamHandlerProxy.parseURL(URLHandlersStreamHandlerProxy.java:267)
>    at java.net.URL.<init>(URL.java:596)
>    at java.net.URL.<init>(URL.java:464)
>    at java.net.URL.<init>(URL.java:413)
>    at java.net.URI.toURL(URI.java:1081)
>    at 
> org.apache.catalina.loader.WebappClassLoader.getURI(WebappClassLoader.java:2355)
>    at 
> org.apache.catalina.loader.WebappClassLoader.findResourceInternal(WebappClassLoader.java:2008)
>    at 
> org.apache.catalina.loader.WebappClassLoader.findClassInternal(WebappClassLoader.java:1786)
>    at 
> org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.java:890)
>    at 
> org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1354)
>    at 
> org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1233)
>    at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)
>    at org.apache.felix.framework.Felix.registerService(Felix.java:2694)
>    at 
> org.apache.felix.framework.BundleContextImpl.registerService(BundleContextImpl.java:252)
>    at 
> org.apache.felix.framework.BundleContextImpl.registerService(BundleContextImpl.java:230)
>    at 
> org.apache.felix.framework.StartLevelActivator.start(StartLevelActivator.java:39)
>    at 
> org.apache.felix.framework.util.SecureAction.startActivator(SecureAction.java:589)
>    at 
> org.apache.felix.framework.Felix$SystemBundleActivator.start(Felix.java:3761)
>    at 
> org.apache.felix.framework.util.SecureAction.startActivator(SecureAction.java:589)
>    at org.apache.felix.framework.Felix.init(Felix.java:849)
>    at org.apache.felix.framework.Felix.start(Felix.java:881)
>    at ... osgi.FelixStartupServlet.init(FelixStartupServlet.java:118)
>    at javax.servlet.GenericServlet.init(GenericServlet.java:212)
>    at 
> org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1172)
>    at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:992)
>    at 
> org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:4058)
>    at 
> org.apache.catalina.core.StandardContext.start(StandardContext.java:4371)
>    at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
>    at org.apache.catalina.core.StandardHost.start(StandardHost.java:719)
>    at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
>    at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443)
>    at org.apache.catalina.core.StandardService.start(StandardService.java:516)
>    at org.apache.catalina.core.StandardServer.start(StandardServer.java:710)
>    at org.apache.catalina.startup.Catalina.start(Catalina.java:578)
>    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>    at 
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
>    at 
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>    at java.lang.reflect.Method.invoke(Method.java:585)
>    at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:288)
>    at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413) 

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to