[ 
https://issues.apache.org/jira/browse/FELIX-2780?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13004072#comment-13004072
 ] 

Sylvain RIBEYRON commented on FELIX-2780:
-----------------------------------------

Hi all.

I've had the same issue running Felix on Web Start.

I've resolved the issue by patching the ExtensionManager.java.

At line 510, replace the line:

throw new IOException("Resource not provided by any extension!");

By the following code:

        // JDK6u24 issue
        return new URLConnection(url) {
                        @Override
                        public void connect() throws IOException {
                        throw new IOException("Resource not provided by any 
extension!");
                        }
                };
        // End JDK6u24 issue

The issue occurs when looking up classes, because IOException is thrown on 
URL.openConnection when classes (or resources) are not found. The IOException 
should not be thrown on the openConnection method, but later on the connect 
method on URLConnection (this streamHandler should work as any other http 
handler: when a file does not exist, the http server sends a 404 response. This 
response can only occur when URLconnection is established, not when 
URLConnection is initialized).

This patch work fine for me.


> Extension bundle implementation relies on urlhandlers  service to start 
> extension bundles
> -----------------------------------------------------------------------------------------
>
>                 Key: FELIX-2780
>                 URL: https://issues.apache.org/jira/browse/FELIX-2780
>             Project: Felix
>          Issue Type: Bug
>          Components: Framework
>    Affects Versions: framework-3.0.7
>         Environment: Host: Ubuntu Linux
> JVM:  JAMVM-1.5.4 (patched - see attached patches in Bug 2775)
> Library: GNU Classpath 0.98 (patched - see attached patches in Bug 2775)
> felix framework - 3.0.7 or 3.1.0-SNAPSHOT 
> framework.security -  1.4.1 or 1.5.0-SNAPSHOT
> Other bundles that are being auto-deployed deployed:
> -rw-r--r-- 1 root  root  150520 2010-12-26 13:33 
> org.apache.felix.bundlerepository-1.6.2.jar
> -rw-r--r-- 1 root  root   90013 2011-01-10 20:06 
> org.apache.felix.framework.security-1.5.0-SNAPSHOT.jar
> -rw-r--r-- 1 samba samba  62727 2011-01-13 12:34 
> org.apache.felix.shell-1.4.2.jar
> -rw-r--r-- 1 samba samba  12748 2011-01-13 12:34 
> org.apache.felix.shell.tui-1.4.1.jar
>            Reporter: Samba
>            Assignee: Karl Pauls
>            Priority: Minor
>
> I am trying to start the felix security framework extension bundle with the 
> urlhandler service  disabled in the Felix framework.
> COMMAND:
> ======
> /usr/local/jamvm/bin/jamvm -Xmx256M -Dfelix.service.urlhandlers=false 
> -Dorg.osgi.framework.security="osgi" 
> -Dpolicy.provider=gnu.java.security.PolicyFile 
> -Djava.security.policy=file:///home/samba/wurk/downloads/osgi/felix-framework-3.0.7/conf/java.policy
>    -jar bin/felix.jar
> Policy file:
> ========
> grant {
>  permission java.security.AllPermission;
> }
> grant codeBase "http://felix.extensions:9/"; {
>  permission java.security.AllPermission;
> };
> I get the following error and the security framework does not start
> WARNING: Unable to start Felix Extension Activator 
> (java.nio.channels.UnresolvedAddressException)
> Stack trace where the exception occurs
>   at java.lang.Thread.dumpStack(Thread.java:522)
>    at 
> java.nio.channels.UnresolvedAddressException.<init>(UnresolvedAddressException.java:55)
>    at gnu.java.nio.SocketChannelImpl.connect(SocketChannelImpl.java:160)
>    at gnu.java.net.PlainSocketImpl.connect(PlainSocketImpl.java:281)
>    at java.net.Socket.connect(Socket.java:454)
>    at java.net.Socket.connect(Socket.java:414)
>    at 
> gnu.java.net.protocol.http.HTTPConnection.getSocket(HTTPConnection.java:721)
>    at 
> gnu.java.net.protocol.http.HTTPConnection.getOutputStream(HTTPConnection.java:802)
>    at gnu.java.net.protocol.http.Request.dispatch(Request.java:292)
>    at 
> gnu.java.net.protocol.http.HTTPURLConnection.connect(HTTPURLConnection.java:219)
>    at 
> gnu.java.net.protocol.http.HTTPURLConnection.getHeaderField(HTTPURLConnection.java:582)
>    at java.net.URLConnection.getHeaderFieldInt(URLConnection.java:426)
>    at java.net.URLConnection.getContentLength(URLConnection.java:302)
>    at gnu.java.net.loader.RemoteURLLoader.getResource(RemoteURLLoader.java:79)
>    at java.net.URLClassLoader.findClass(URLClassLoader.java:528)
>    at java.lang.ClassLoader.loadClass(ClassLoader.java:341)
>    at java.lang.ClassLoader$1.loadClass(ClassLoader.java:1112)
>    at java.lang.ClassLoader.loadClass(ClassLoader.java:293)
>    at 
> org.apache.felix.framework.ExtensionManager.startExtensionBundle(ExtensionManager.java:381)
>    at org.apache.felix.framework.Felix.installBundle(Felix.java:2610)
>    at org.apache.felix.framework.Felix.installBundle(Felix.java:2429)
>    at 
> org.apache.felix.framework.BundleContextImpl.installBundle(BundleContextImpl.java:121)
>    at 
> org.apache.felix.framework.BundleContextImpl.installBundle(BundleContextImpl.java:107)
>    at 
> org.apache.felix.main.AutoProcessor.processAutoDeploy(AutoProcessor.java:173)
>    at org.apache.felix.main.AutoProcessor.process(AutoProcessor.java:78)
>    at org.apache.felix.main.Main.main(Main.java:291)
>    at java.lang.reflect.VMMethod.invoke(Native Method)
>    at java.lang.reflect.Method.invoke(Method.java:327)
>    at jamvm.java.lang.JarLauncher.main(JarLauncher.java:50)

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to