[
https://issues.jboss.org/browse/WELD-1040?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12694533#comment-12694533
]
Alexandre Gattiker commented on WELD-1040:
------------------------------------------
GitHub pull request created at https://github.com/weld/core/pull/203
> Support Java Web Start
> ----------------------
>
> Key: WELD-1040
> URL: https://issues.jboss.org/browse/WELD-1040
> Project: Weld
> Issue Type: Bug
> Components: Java SE Support
> Affects Versions: 1.1.4.Final, 1.1.5.Final
> Reporter: Alexandre Gattiker
> Attachments: weld-webstart-bug.zip
>
>
> ClassLoader.getResources("META-INF/beans.xml") returns remote server URLs in
> the format "http://..."
> Weld's FileSystemURLHandler tries to open these URLs as files, which leads to:
> java.lang.RuntimeException: Error handling file
> http:/localhost:8080/weld-webstart-war-0.0.1-SNAPSHOT/webstart/weld-webstart-jar.jar
> at
> org.jboss.weld.environment.se.discovery.url.FileSystemURLHandler.handleArchiveByFile(FileSystemURLHandler.java:80)
> at
> org.jboss.weld.environment.se.discovery.url.FileSystemURLHandler.handle(FileSystemURLHandler.java:58)
> at
> org.jboss.weld.environment.se.discovery.url.URLScanner.scan(URLScanner.java:102)
> at
> org.jboss.weld.environment.se.discovery.url.WeldSEUrlDeployment.<init>(WeldSEUrlDeployment.java:39)
> at org.jboss.weld.environment.se.Weld.createDeployment(Weld.java:130)
> at org.jboss.weld.environment.se.Weld.initialize(Weld.java:80)
> at com.example.TestApp.main(TestApp.java:12)
> 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:597)
> at com.sun.javaws.Launcher.executeApplication(Launcher.java:1914)
> at com.sun.javaws.Launcher.executeMainClass(Launcher.java:1847)
> at com.sun.javaws.Launcher.doLaunchApp(Launcher.java:1609)
> at com.sun.javaws.Launcher.run(Launcher.java:138)
> at java.lang.Thread.run(Thread.java:680)
> Caused by: java.util.zip.ZipException: error in opening zip file
> at java.util.zip.ZipFile.open(Native Method)
> at java.util.zip.ZipFile.<init>(ZipFile.java:127)
> at java.util.zip.ZipFile.<init>(ZipFile.java:143)
> at
> org.jboss.weld.environment.se.discovery.url.FileSystemURLHandler.handleArchiveByFile(FileSystemURLHandler.java:71)
> ... 15 more
> I am attaching a demo project that also contains a proposed fix, using
> com.sun.jnlp.JNLPClassLoader#getJarFile(URL) to retrieve the location of the
> locally cached copy of the JAR. As this is an internal class it is accessed
> by reflection. The getJarFile method only exists in JRE 6, not in JRE 5.
> Add to org.jboss.weld.environment.se.discovery.url.FileSystemURLHandler:
> if (urlPath.startsWith("http:") || urlPath.startsWith("https:")) {
> ClassLoader cl;
> if (Thread.currentThread().getContextClassLoader() != null) {
> cl = Thread.currentThread().getContextClassLoader();
> } else {
> cl = getClass().getClassLoader();
> }
> Method m = cl.getClass().getMethod("getJarFile", URL.class);
> JarFile jarFile = (JarFile) m.invoke(cl, new URL(urlPath));
> urlPath = jarFile.getName();
> }
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators:
https://issues.jboss.org/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira
_______________________________________________
weld-issues mailing list
[email protected]
https://lists.jboss.org/mailman/listinfo/weld-issues