Using FTP Proxy with apache commons-net
apache-commons-net, ftp, java
Solution
You have several ways of using proxies in Java, especially from version 1.5.
- Using System Properties: quick & powerfull but limited flexibility
- You can use use a SOCKS proxy for all TCP connections.
- You can also set a proxy per protocol, doable for HTTP, FTP and HTTPS
- For both methods, you can specify a list of hosts that will not use proxy
- Using the `java.net.Proxy` class (Java 1.5+) to set (or not) a `Proxy` per `Connection`
- Impleting a `java.net.ProxySelector` (idem) which will determine a `Proxy` for each `Connection` according to your criteria
See the detailled Sun technote on networking & proxies.
Problem
I want to set up an FTP connection using a proxy server with Apache's commons-net. But looking at this Does FTPClient support FTP connections through an FTP proxy server? has me worried. I have to meddle with the system properties and the Sun docs state that "If socksProxyHost is specified then all TCP sockets will use the SOCKS proxy server to establish a connection or accept one." WTH? All TCP sockets? What about my database connections? Or other FTP connections i might want to open at the same time not using a proxy? Will they all be affected? Is there some other way to do it that doesn't mess with the rest of my application?