Somehow the URL handlers cache has the sun file protocol handler from the start,
at least as early as a debugger will let me stop in the URL.getURLStreamHandler
method. You need to flush this handler cache by setting a URLStreamHandlerFactory.
The change to make your example work is to install a factory that always returns
null:
Tests 1371>cat tstProtocol.java
import java.io.*;
import java.net.*;
class tstProtocol
{
static class NullFactory implements java.net.URLStreamHandlerFactory
{
public URLStreamHandler createURLStreamHandler(final String protocol)
{
return null;
}
}
public static void main(String[] args) throws Exception
{
// set handler pkgs
System.out.println("java.protocol.handler.pkgs: " + System.getProperty("java.
protocol.handler.pkgs"));
// Flush the handlers cache by setting a noop factory
URL.setURLStreamHandlerFactory(new NullFactory());
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());
}
}
Tests 1369>java -cp ".;/tmp/JBoss/jboss-3.0.5/client/jboss-common-client.jar"
-Djava.protocol.handler.pkgs=org.jboss.net.protocol tstProtocol /tmp
java.protocol.handler.pkgs: org.jboss.net.protocol
url: file:/tmp
connection class: org.jboss.net.protocol.file.FileURLConnection
java.net.MalformedURLException: unknown protocol: other
at java.net.URL.<init>(URL.java:302)
at java.net.URL.<init>(URL.java:219)
at java.net.URL.<init>(URL.java:238)
at tstProtocol.main(tstProtocol.java:27)
xxxxxxxxxxxxxxxxxxxxxxxx
Scott Stark
Chief Technology Officer
JBoss Group, LLC
xxxxxxxxxxxxxxxxxxxxxxxx
----- Original Message -----
From: "Alex Loubyansky" <[EMAIL PROTECTED]>
To: "Scott M Stark" <[EMAIL PROTECTED]>
Sent: Tuesday, January 14, 2003 9:48 PM
Subject: Re[6]: [JBoss-dev] URLConnection and opened files
> Yes, I thought about it too. There are two cases:
> - the thread creating URL can't find custom handlers;
> - Sun's handler was somehow initialized/used before (before setting the
> property or somehow else?)
>
> But I can't understand why my standalone test doesn't work. I set
> property in the command line and my handlers are in the classpath.
> I don't see any chance for Sun's handler to be used first.
>
> Ok, I'll update JBoss-3.0 and see.
>
> 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