Aplicativo Java por trás do proxy para usar a variável http_proxy no linux

Estou pensando em um aplicativo Java simples (linha de comando) que se conecta à internet para baixar um arquivo XML, o problema é que meu Ubuntu está usando um proxy para se conectar à internet com nome de usuário e senha (através de http_proxy ="http://:@:" ). Então, minha pergunta é, seria possível escrever um aplicativo java para usar a variável http_proxy ? Em vez de configurar programaticamente o proxy HTTP e o host em todos os aplicativos que vou escrever.

Não esqueça a variável shell _JAVA_OPTIONS

 export _JAVA_OPTIONS='-Dhttp.proxyHost=cache.com -Dhttp.proxyPort=3128' 

Para mais propriedades, veja aqui: http://mindprod.com/jgloss/properties.html

Você pode usar este script para o ambiente automático passando para o aplicativo java

Este é um script inteligente, se você ativar a seção nmap, ele está detectando o status de proxy para cima ou para baixo, se estiver em status, ele está usando o proxy se estiver em status baixo usando conexão direta.

Com este script você pode conectar seu aplicativo com configurações de ambiente ou sobrescrever o ambiente ou com o método de detecção de serviço de proxy, o aplicativo seleciona o modo direto ou proxy

Este é um script de shell bash de conexão inteligente

Ofcouse se você não habilitar a seção up / down do serviço nmap, esse é um ambiente de proxy simples ou o valor de sobregravação do seu aplicativo

Ele está produzindo automaticamente a linha de comando de conexão com proxy e, em seguida, executando seu aplicativo java

Este é o código do script:

 #!/bin/bash # Author : Kerim BASOL # Twitter : http://twitter.com/kerimbasol # URL : http://kerimbasol.com # Version : 0.1 # Java Proxy support script # You can use with GNU License # Which is your runtime jar file # Please change this as your application's needs JARFILE="myapp.jar" #Automaticly import system proxy settings if [ -n "$http_proxy" ] ; then echo $http_proxy | grep "@" if [ $? -eq 0 ]; then # If variable has username and password, its parse method different PROXY_HOST=$(echo $http_proxy | sed 's/http:\/\/.*@\(.*\):.*/\1/') PROXY_PORT=$(echo $http_proxy | sed 's/http:\/\/.*@.*:\(.*\)/\1/' | tr -d "/") USERNAME=$(echo $http_proxy | sed 's/http:\/\/\(.*\)@.*/\1/'|awk -F: '{print $1}') PASSWORD=$(echo $http_proxy | sed 's/http:\/\/\(.*\)@.*/\1/'|awk -F: '{print $2}') else # If it doesn't have username and password, its parse method this PROXY_HOST=$(echo $http_proxy | sed 's/http:\/\/\(.*\):.*/\1/') PROXY_PORT=$(echo $http_proxy | sed 's/http:\/\/.*:\(.*\)/\1/' | tr -d "/") fi fi # If you want to overwrite system proxy settings # uncomment these lines as your wish #PROXY_HOST="127.0.0.1" #PROXY_PORT="3128" #USERNAME="kerimbasol" #PASSWORD="deneme" # Display usage if [ $# -gt 0 ] ; then if [ $1 = "--help" ] ; then echo "$0 [  [  ] ] " exit 0 fi fi # Command line proxy pass if [ $# -gt 1 ] ; then PROXY_HOST=$1 PROXY_PORT=$2 if [ $# -gt 3 ] ; then USERNAME=$3 PASSWORD=$4 fi fi # If you want to use this feature , enables and disables proxy support for proxy service up or down status # uncomment these line, if you installed nmap # at ubuntu system you can type this command for this future # sudo apt-get install nmap #STATUS=$(nmap -sT $PROXY_HOST -p $PROXY_PORT 2>/dev/null| grep open |awk '{print $2}') #if [ "$STATUS" != "open" ]; then # If service isn't running, disable proxy support # PROXY_HOST="" # PROXY_PORT="" #fi CMD="java -cp." if [ -n "$PROXY_HOST" -a -n "$PROXY_PORT" ] ; then CMD="java -cp . -Dhttp.proxyHost=$PROXY_HOST -Dhttp.proxyPort=$PROXY_PORT" if [ -n "$USERNAME" -a -n "$PASSWORD" ]; then CMD="$CMD -Dhttp.proxyUser=$USERNAME -Dhttp.proxyPassword=$PASSWORD" fi fi # If you want , change this line as your application wish ;) CMD="$CMD -jar $JARFILE" eval $CMD 

Com uma JVM atual, você pode passar o host e a porta do proxy usando propriedades Java

 java -Dhttp.proxyHost=webcache.mydomain.com -Dhttp.proxyPort=8080 -Dhttp.noProxyHosts=”localhost|host.mydomain.com” GetURL 

Veja http://java.sun.com/javase/6/docs/technotes/guides/net/proxies.html

Para nome de usuário e senha, o que dizer:

 -Dhttp.proxyUser=username -Dhttp.proxyPassword=supersecret 

em http://java.sun.com/javase/6/docs/technotes/guides/net/proxies.html, não há comando para passar o nome de usuário e a senha do proxy para a JVM.

Intereting Posts