Introduction

JProxyLoader installs itself as a custom ProxySelector which is called by jvm before opening connection to any URL. Thanks to this it allows to route one connection to "proxy A" and another connection to "proxy B" for nearly any java application (see limitations section). JProxyLoader allows to define any number of SOCKS and HTTP proxies by means of jvm param or configuration file.

JProxyLoader can also be used as a typical java library and can be bundled with any application (keeping in mind that JProxyLoader is released under Apache 2.0 license). A developer using this library can easily manage proxy connections inside its own application. NOTE: full support for this will be introduced in 1.1 version (current version 1.0 is mainly targeted to allow proxification of other applications).

License

Currently JProxyLoader is released under Apache 2.0 license. You can obtain your copy of the license on Apache licenses site.

Limitations

If you plan to develop against jProxyLoader than you should not encounter any problems (mainly because you decide to install CustomProxySelector yourself).

If you plan to run existing application which already defines custom ProxySelector you can run into the situation were CustomProxySelector installed by jProxyLoader will be overridden by another implementation of ProxySelector. This issue might be solved in future releases if there will be requests for such functionality.

Another thing to consider is that current version of jProxyLoader (available in Download section) was compiled against java 6.0 source code version. It means that you need at least java6 both to develop against jProxyLoader as a library and to run other applications with jProxyLoader as a proxy selector. NOTE: with a little effort the code should be compilable against java 1.5 or even 1.4 (commenting our @Override annotations and removing static imports should be enough). If there will be need I can provide jProxyLoader compiled against jdk 1.4, however easier solution is to simply switch your application to java 6 instead.