How do I set the proxy to be used by the JVM How do I set the proxy to be used by the JVM java java

How do I set the proxy to be used by the JVM


From the Java documentation (not the javadoc API):

http://download.oracle.com/javase/6/docs/technotes/guides/net/proxies.html

Set the JVM flags http.proxyHost and http.proxyPort when starting your JVM on the command line.This is usually done in a shell script (in Unix) or bat file (in Windows). Here's the example with the Unix shell script:

JAVA_FLAGS=-Dhttp.proxyHost=10.0.0.100 -Dhttp.proxyPort=8800java ${JAVA_FLAGS} ...

When using containers such as JBoss or WebLogic, my solution is to edit the start-up scripts supplied by the vendor.

Many developers are familiar with the Java API (javadocs), but many times the rest of the documentation is overlooked. It contains a lot of interesting information: http://download.oracle.com/javase/6/docs/technotes/guides/


Update : If you do not want to use proxy to resolve some local/intranet hosts, check out the comment from @Tomalak:

Also don't forget the http.nonProxyHosts property!

-Dhttp.nonProxyHosts="localhost|127.0.0.1|10.*.*.*|*.foo.com‌​|etc"


To use the system proxy setup:

java -Djava.net.useSystemProxies=true ...

Or programatically:

System.setProperty("java.net.useSystemProxies", "true");

Source: http://docs.oracle.com/javase/7/docs/api/java/net/doc-files/net-properties.html


To set an HTTP/HTTPS and/or SOCKS proxy programmatically:

...public void setProxy() {    if (isUseHTTPProxy()) {        // HTTP/HTTPS Proxy        System.setProperty("http.proxyHost", getHTTPHost());        System.setProperty("http.proxyPort", getHTTPPort());        System.setProperty("https.proxyHost", getHTTPHost());        System.setProperty("https.proxyPort", getHTTPPort());        if (isUseHTTPAuth()) {            String encoded = new String(Base64.encodeBase64((getHTTPUsername() + ":" + getHTTPPassword()).getBytes()));            con.setRequestProperty("Proxy-Authorization", "Basic " + encoded);            Authenticator.setDefault(new ProxyAuth(getHTTPUsername(), getHTTPPassword()));        }    }    if (isUseSOCKSProxy()) {        // SOCKS Proxy        System.setProperty("socksProxyHost", getSOCKSHost());        System.setProperty("socksProxyPort", getSOCKSPort());        if (isUseSOCKSAuth()) {            System.setProperty("java.net.socks.username", getSOCKSUsername());            System.setProperty("java.net.socks.password", getSOCKSPassword());            Authenticator.setDefault(new ProxyAuth(getSOCKSUsername(), getSOCKSPassword()));        }    }}...public class ProxyAuth extends Authenticator {    private PasswordAuthentication auth;    private ProxyAuth(String user, String password) {        auth = new PasswordAuthentication(user, password == null ? new char[]{} : password.toCharArray());    }    protected PasswordAuthentication getPasswordAuthentication() {        return auth;    }}...

Remember that HTTP proxies and SOCKS proxies operate at different levels in the network stack, so you can use one or the other or both.