• Post Reply Bookmark Topic Watch Topic
  • New Topic

Setting JVM/JRE to use Windows Proxy Automatically  RSS feed

 
Tetsuo Suzuki
Greenhorn
Posts: 22
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Hey everyone,

In a java program how one can utilize the proxy that is already configured (on Windows, I assume it would be the same everywhere (write once, run... ?)).

Here is a demonstration of my issue:

1. Go to your Control Panel->Java and set a proxy address.
2. Run the following simple applet code (I'm using the Eclipse IDE):

import java.awt.Graphics;
import javax.swing.JApplet;
import java.util.*;

public class Ranchlet extends JApplet {
private String message;
public void init(){
Properties props = System.getProperties();
message = props.getProperty("http.proxyHost", "NONE");
message = (message.length() == 0)? "NONE": message;
}

public void paint(Graphics g)
{
g.drawString(message, 20, 20);
}
}

The Applet displays "NONE" without regard to the settings you've placed in the Java Control Panel. What would be best would be if the Windows proxy settings (usually set in Internet Explorer) were what I could determine but doing an extra configuration step in the Java Control Panel would still be an acceptable solution.

Thanks!
 
Joe Ess
Bartender
Posts: 9439
12
Linux Mac OS X Windows
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Originally posted by Tetsuo Suzuki:
In a java program how one can utilize the proxy that is already configured (on Windows, I assume it would be the same everywhere (write once, run... ?)).


I don't see that as an option in Java Networking and Proxies.
 
Ernest Friedman-Hill
author and iconoclast
Sheriff
Posts: 24217
38
Chrome Eclipse IDE Mac OS X
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
The "Java Control Panel" configures the JVM for the Java web browser plugin only. Those properties are indeed used for applets that are run through the plugin. If you want properties to be set for an applet running in Eclipse, I think the Eclipse launch configuration includes the ability to set them.
 
Tetsuo Suzuki
Greenhorn
Posts: 22
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Hey everyone, I think I found a solution and will post it in case anyone searching hits the question:

It is possible to detect the proxy using the [ProxySelector][1] class and assign the system proxy by assigning environment variables with the [setProperty method of the System class][2]:

System.setProperty("java.net.useSystemProxies", "true");
System.out.println("detecting proxies");
List l = null;
try {
l = ProxySelector.getDefault().select(new URI("http://foo/bar"));
}
catch (URISyntaxException e) {
e.printStackTrace();
}
if (l != null) {
for (Iterator iter = l.iterator(); iter.hasNext() {
java.net.Proxy proxy = (java.net.Proxy) iter.next();
System.out.println("proxy hostname : " + proxy.type());

InetSocketAddress addr = (InetSocketAddress) proxy.address();

if (addr == null) {
System.out.println("No Proxy");
} else {
System.out.println("proxy hostname : " + addr.getHostName());
System.setProperty("http.proxyHost", addr.getHostName());
System.out.println("proxy port : " + addr.getPort());
System.setProperty("http.proxyPort", Integer.toString(addr.getPort()));
}
}
}


[1]: http://java.sun.com/j2se/1.5.0/docs/api/java/net/ProxySelector.html
[2]: http://java.sun.com/j2se/1.4.2/docs/api/java/lang/System.html#setProperty(java.lang.String,%20java.lang.String)
 
  • Post Reply Bookmark Topic Watch Topic
  • New Topic
Boost this thread!