Here are my findings. First, JBoss-3.0 is ok. The problem is in JBoss-3.2 and HEAD.
Second, I found the cause. The resources we want to load with our custom handlers through class loaders must be added to the classpath AFTER the (custom) URLStreamHandlerFactory is setup. URLClassLoaders hold their URLs. The URLs created before the custom URLStreamHandlerFactory is set up have Sun's handler. System class loader is a subclass of the URLClassLoader. Thus, its URLs have Sun's handler. (It seems to me even if java.protocol.handler.pkgs is setup. Is it a VM's bug or mine?) Suppose we attempt to load resource that was in the classpath before the custom handler factory was setup. The URL for the resource is constructed with: URL(URL context, String spec). where the context URL comes from the class loader with Sun's handler. Then resource's URL's handler is assigned context.handler. So, it doesn't matter whether the custom handler factory is setup. alex Tuesday, January 14, 2003, 9:49:45 PM, you wrote: SMS> Oh, I now remeber looking at this but I can't remember the context. There SMS> is a cache of handlers as the URL level. If the file protocol is referenced SMS> before the custom JBoss handler is available then the default Sun one will SMS> be used. Is there a difference between 3.0 and 3.2 with regard to when the SMS> custom protocol handlers are installed? I'll check later today. SMS> xxxxxxxxxxxxxxxxxxxxxxxx SMS> Scott Stark SMS> Chief Technology Officer SMS> JBoss Group, LLC SMS> xxxxxxxxxxxxxxxxxxxxxxxx SMS> ----- Original Message ----- SMS> From: "Alex Loubyansky" <[EMAIL PROTECTED]> SMS> To: "Scott M Stark" <[EMAIL PROTECTED]> SMS> Sent: Tuesday, January 14, 2003 7:07 AM SMS> Subject: Re[4]: [JBoss-dev] URLConnection and opened files >> I'm a bit confused. I wrote a simple standalone test. >> >> - main >> public static void main(String[] args) throws Exception >> { >> // set handler pkgs >> System.out.println("java.protocol.handler.pkgs: " + >System.getProperty("java.protocol.handler.pkgs")); >> >> URL url = new URL("file", null, args[0]); >> System.out.println("url: " + url); >> URLConnection urlCon = url.openConnection(); >> System.out.println("connection class: " + urlCon.getClass().getName()); >> >> url = new URL("other", null, args[0]); >> System.out.println("url: " + url); >> urlCon = url.openConnection(); >> System.out.println("connection class: " + urlCon.getClass().getName()); >> } >> >> - run >> java -Djava.protocol.handler.pkgs=org.avoka.test.files.protocol -classpath %cp% >org.avoka.test.files.FilesTest build.xml >> >> - output >> java.protocol.handler.pkgs: org.avoka.test.files.protocol >> url: file:build.xml >> connection class: sun.net.www.protocol.file.FileURLConnection >> url: other:build.xml >> connection class: org.avoka.test.files.protocol.other.OtherURLConnection >> >> I do have org.avoka.test.files.protocol.file.Handler and >> org.avoka.test.files.protocol.file.FileURLConnection on the classpath. >> My file.Handler isn't called. Am I missing something? >> >> This same thing happens with JBoss-3.2 and HEAD but not JBoss-3.0 (my >> 3.0 is not up to date). >> >> JDK1.3.1_05, J2SDK1.4.0 >> Win2K >> >> Thanks, >> alex ------------------------------------------------------- This SF.NET email is sponsored by: Take your first step towards giving your online business a competitive advantage. Test-drive a Thawte SSL certificate - our easy online guide will show you how. Click here to get started: http://ads.sourceforge.net/cgi-bin/redirect.pl?thaw0027en _______________________________________________ Jboss-development mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/jboss-development