Bug in URLConnection?

Christopher Hegarty - Sun Microsystems Ireland Christopher.Hegarty at Sun.COM
Wed Dec 2 03:42:11 PST 2009


Hi Paulo,

I must admit that making a URLConnection request from within select 
looks a little funny, but I don't think it should cause a problem. I've 
run the test you posted and I don't see the default proxy selector being 
invoke. I only see the user defined selector. Can you provide more 
information about what you are seeing? JDK version, any debugging 
output/traces?

It may also be worth enabling HTTP logging, 
-Djava.util.logging.config.file=logging.properties (see attached 
logging.properties)

-Chris.


On 02/12/2009 00:56, Paulo Levi wrote:
> Test case:
> 
> package util.net;
> 
> import java.io.IOException;
> import java.net.MalformedURLException;
> import java.net.Proxy;
> import java.net.ProxySelector;
> 
> import java.net.SocketAddress;
> import java.net.URI;
> import java.net.URL;
> import java.net.URLConnection;
> import java.util.Collections;
> import java.util.List;
> import java.util.logging.Level;
> import java.util.logging.Logger;
> 
> import org.junit.After;
> import org.junit.AfterClass;
> import org.junit.Before;
> import org.junit.BeforeClass;
> import org.junit.Test;
> 
> /**
>  *
>  * @author i30817
>  */
> public class ProxySelectorBugTest {
> 
>     public ProxySelectorBugTest() {
>     }
> 
>     @BeforeClass
>     public static void setUpClass() throws Exception {
>     }
> 
>     @AfterClass
>     public static void tearDownClass() throws Exception {
> 
>     }
> 
>     @Before
>     public void setUp() {
>     }
> 
>     @After
>     public void tearDown() {
>     }
> 
>     /**
>      *
>      */
>     @Test
>     public void testURLConnectionDoesntBypassProxySelector(){
> 
>         ProxySelector proxySelector = ProxySelector.getDefault();
>         ProxySelector.setDefault(new UserProxySelector());
>         try {
>                 //This calls the installed proxy selector.
>                 URL u = new URL("http://www.yahoo.com");
> 
>                 URLConnection conn = u.openConnection();
>                 conn.connect();
>             } catch (Exception ex) {
> 
> Logger.getLogger(ProxySelectorBugTest.class.getName()).log(Level.SEVERE,
> null, ex);
> 
>             }
>         ProxySelector.setDefault(proxySelector);
>     }
> 
>     class UserProxySelector extends ProxySelector{
> 
>         @Override
>         public void connectFailed(URI uri, SocketAddress sa, IOException ioe) {
> 
> 
>         }
> 
>         @Override
>         public List<Proxy> select(URI uri) {
>             try {
>                 //bug here, the java doc say that this will bypass the installed
>                 //proxyselector but it doesn't.
> 
>                 URL u = new URL("http://www.google.com");
>                 URLConnection conn = u.openConnection(Proxy.NO_PROXY);
>                 conn.connect();
>             } catch (Exception ex) {
> 
> 
> Logger.getLogger(UserProxySelector.class.getName()).log(Level.SEVERE,
> null, ex);
>             }
>             return Collections.singletonList(Proxy.NO_PROXY);
>         }
> 
>     }
> }
> 
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: logging.properties
Url: http://mail.openjdk.java.net/pipermail/net-dev/attachments/20091202/dcff9c61/logging.properties 


More information about the net-dev mailing list