Usually to configure proxy you need to define the following system properties, when you start a JVM:
-Dhttp.proxySet=true -Dhttp.proxyHost=<host> -Dhttp.proxyPort=<port>
But unfortunately it doesn't always work. Actually it did work only for Axis.
So here are the solutions that worked:
In Axis2 it's possible to add the following code to the client that will copy proxy settings from system properties:
ServiceClient serviceClient = stub._getServiceClient(); Options options = serviceClient.getOptions(); if (System.getProperty("http.proxySet", "false").equals("true")) { ProxyProperties proxyProperties = new ProxyProperties(); proxyProperties.setProxyName(System.getProperty("http.proxyHost")); proxyProperties.setProxyPort(Integer.parseInt(System.getProperty("http.proxyPort"))); // set username and password if you need them options.setProperty(HTTPConstants.PROXY, proxyProperties); }
In JAX-WS you may set the proxy in the code:
if (System.getProperty("http.proxySet", "false").equals("true")) { ProxySelector.setDefault(new ProxySelector() { @Override public void connectFailed(URI uri, SocketAddress sa, IOException ioe) { throw new RuntimeException("Proxy connect failed", ioe); } @Override public List select(URI uri) { return Arrays.asList(new Proxy(Proxy.Type.HTTP, new InetSocketAddress(System.getProperty("http.proxyHost"), Integer.parseInt(System.getProperty("http.proxyPort"))))); } });
Recommended Reading
1. Effective Java (2nd Edition)2. Java™ Puzzlers: Traps, Pitfalls, and Corner Cases
3. Mort
No comments:
Post a Comment