How to Set JVM Proxy Setting Without Touching the Code

First of all, proxy server is a server that acts as an intermediary for requests from clients seeking resources from other server (or Internet). Usually companies' Internet connection facility use proxy to make it possible to control their employees' browsing activities, such as:

  • Define someone's bandwidth limit for a specific period
  • Define a blacklist of websites, within a specific time schedule or not
  • Storing employees' browsing history log
  • Storing employees' chatting history log
Commonly proxy servers are used for security reason, and those points above have to be implemented with a certain networking skills or by using some helper tools.

By adding these 3 JVM arguments to java, your application will use the proxy network to create HTTP requests:
  • http.useProxy=true
  • http.proxyHost=[domain or IP]
  • http.proxyPort=[port number]
  • http.nonProxyHosts=[regex of proxy exclusions]
Example:
java -Dhttp.useProxy=true -Dhttp.proxyHost=10.1.1.2 -Dhttp.proxyPort=8877 -Dhttp.nonProxyHosts=127.0.0.1|localhost -jar testsomething.jar

For HTTPS, the arguments are:
  • https.proxyHost
  • https.proxyPort
  • http.nonProxyHosts
For FTP, the arguments are:
  • ftp.proxyHost
  • ftp.proxyPort
  • ftp.nonProxyHosts
If the proxy network is a HTTP Proxy that requires authentication with username and password, then you have to use java.net.Authentication and it means that you have to touch your code.

If the proxy network is a SOCKS v5 Proxy, then again it can be done by using JVM arguments:
  • socksProxyHost=[domain or IP]
  • socksProxyPort=[port number]
  • java.net.socks.username=[the username]
  • java.net.socks.password=[the password]
Example:
java -DsocksProxyHost=10.1.1.2 -DsocksProxyPort=8877 -Djava.net.socks.username=alibaba -Djava.net.socks.password=secret

For further information:
Networking Properties reference from sun.java.com
Java Networking and Proxies from sun.java.com

10 comments: (+add yours?)

Anonymous said...

Thx, concise summary with useful examples!

administrator said...

excellent tips

Anonymous said...

How does one specify username and password for the http proxy server without touching the code ?

Martin Rybak said...

Thank you so much. Saved the day.

Anonymous said...

Thank you.
Saved my day too.

Radley Co Tad said...

Amazing Article, thank you!. I am very glad to read your informative & practical blog. Kindly keep updating your blog. Java Developer is a wonderful career for IT students.To start Dream Career to become a Java developer learn from Java Training in Chennai. or learn thru Java Online Training from India .

Ella lily said...

I am doing a report on this subject. Your article is full of really useful information. I will make sure to come back to check out your posts for my next report. visit website

Matias said...

I was very impressed by this post, this site has always been pleasant news Thank you very much for such an interesting post, and I meet them more often then I visited this site. privacyonline

mona martin said...

I hope you will share such type of impressive contents again with us so that we can utilize it and get more advantage. get more privacy

James harper said...

Good composed article. It will be steady to any individual who uses it, including me. Continue doing what you are doing – can'r hold up to peruse more posts. lemigliorivpn