361 votes

Comment puis-je configurer le proxy à utiliser par la JVM

Plusieurs fois, une application Java doit se connecter à Internet. L’exemple le plus courant se produit quand il lit un fichier XML et doit télécharger son schéma.

Je suis derrière un serveur proxy. Comment puis-je configurer ma machine virtuelle Java pour utiliser le proxy ?

394voto

Leonel Points 8174

À partir de la documentation de Java (pas la javadoc de l'API):

http://download.oracle.com/javase/6/docs/technotes/guides/net/proxies.html

Définir la JVM drapeaux http.proxyHost et http.proxyPort lors du démarrage de votre JVM sur la ligne de commande. Ceci est généralement fait dans un script shell (Unix) ou fichier bat (Windows). Voici l'exemple avec le shell script Unix:

JAVA_FLAGS=-Dhttp.proxyHost=10.0.0.100 -Dhttp.proxyPort=8800
java ${JAVA_FLAGS} ...

Lors de l'utilisation de récipients tels que JBoss ou WebLogic, ma solution est de modifier les scripts de démarrage fournis par le vendeur.

Beaucoup de développeurs sont familiers avec l'API Java (javadoc), mais de nombreuses fois le reste de la documentation est négligé. Il contient beaucoup d'informations intéressantes: http://download.oracle.com/javase/6/docs/technotes/guides/

Edit: le Soleil est mort, vive le Soleil ! La mise à jour des liens vers la nouvelle maison de la documentation, à oracle.com

132voto

gr5 Points 101

Pour utiliser la configuration de proxy du système :

Ou par programmation :

Source : http://docs.oracle.com/javase/7/docs/api/java/net/doc-files/net-properties.html

90voto

Chris Carruthers Points 1441

Pour définir par programme un proxy HTTP/HTTPS ou chaussettes :

N’oubliez pas que les proxies HTTP et les serveurs proxy SOCKS fonctionne à différents niveaux dans la pile de réseau, donc vous pouvez utiliser l’un ou l’autre ou les deux.

50voto

GHad Points 4131

Vous pouvez définir ces drapeaux par programmation de cette façon :

Juste les bonnes valeurs de retour des méthodes , et `` et vous pouvez appeler cet extrait de code quand vous le voulez.

13voto

Alex. S. Points 16684

Vous pouvez définir des propriétés sur le serveur proxy en tant que paramètres de la jvm

-Dhttp.proxyPort=8080, proxyHost, etc.

mais si vous avez besoin de passer par un proxy d'authentification, vous avez besoin d'un authentificateur comme dans cet exemple:

ProxyAuthenticator.java

import java.net.*;
import java.io.*;

public class ProxyAuthenticator extends Authenticator {

    private String userName, password;

    protected PasswordAuthentication getPasswordAuthentication() {
        return new PasswordAuthentication(userName, password.toCharArray());
    }

    public ProxyAuthenticator(String userName, String password) {
        this.userName = userName;
        this.password = password;
    }
}

Example.java

    import java.net.Authenticator;
    import ProxyAuthenticator;

public class Example {

    public static void main(String[] args) {
        String username = System.getProperty("proxy.authentication.username");
        String password = System.getProperty("proxy.authentication.password");

    			if (username != null && !username.equals("")) {
            Authenticator.setDefault(new ProxyAuthenticator(username, password));
        }

    			// here your JVM will be authenticated

    }
}

Basé sur cette réponse: http://mail-archives.apache.org/mod_mbox/jakarta-jmeter-user/200208.mbox/%3C494FD350388AD511A9DD00025530F33102F1DC2C@MMSX006%3E

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X