Te sugerimos que pruebes esta resolución en un ambiente controlado antes de pasarlo a producción, un saludo.
Solución:
De la documentación de Java (no la API de javadoc):
http://download.oracle.com/javase/6/docs/technotes/guides/net/proxies.html
Establecer las banderas de JVM http.proxyHost
y http.proxyPort
al iniciar su JVM en la línea de comando. Esto generalmente se hace en un script de shell (en Unix) o un archivo bat (en Windows). Aquí está el ejemplo con el script de shell de Unix:
JAVA_FLAGS=-Dhttp.proxyHost=10.0.0.100 -Dhttp.proxyPort=8800
java $JAVA_FLAGS ...
Cuando uso contenedores como JBoss o WebLogic, mi solución es editar los scripts de inicio proporcionados por el proveedor.
Muchos desarrolladores están familiarizados con la API de Java (javadocs), pero muchas veces se pasa por alto el resto de la documentación. Contiene mucha información interesante: http://download.oracle.com/javase/6/docs/technotes/guides/
Actualizar : Si no desea utilizar un proxy para resolver algunos hosts locales/de intranet, consulte el comentario de @Tomalak:
¡Además, no olvide la propiedad http.nonProxyHosts!
-Dhttp.nonProxyHosts="localhost|127.0.0.1|10.*.*.*|*.foo.com|etc"
Para usar la configuración del proxy del sistema:
java -Djava.net.useSystemProxies=true ...
O programáticamente:
System.setProperty("java.net.useSystemProxies", "true");
Fuente: http://docs.oracle.com/javase/7/docs/api/java/net/doc-files/net-properties.html
Para configurar un proxy HTTP/HTTPS y/o SOCKS mediante programación:
...
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;
...
Recuerde que los servidores proxy HTTP y los servidores proxy SOCKS operan en diferentes niveles en la pila de red, por lo que puede usar uno u otro o ambos.
Si sostienes algún recelo y disposición de ascender nuestro artículo eres capaz de realizar un comentario y con mucho gusto lo leeremos.