2011-02-08 17 views
7

Ho dovuto aggiornare una precedente applicazione java che richiede una risposta SOAP da un servizio Web esterno. Questo servizio è al di fuori del nostro firewall che ora ci richiede di passare attraverso un proxy invece di colpire direttamente l'URL.Connessioni SOAP tramite un proxy utilizzando URLEndpoint

Attualmente l'app Java utilizza URLEndpoint che accetta una stringa per l'URL. Di solito quando io sono sempre a un URL attraverso un proxy creo un URL in questo modo:

URL url = new URL("http", "theproxy.com", 5555, finalUrl); 

Il problema è URLEndpoint richiede solo una stringa per l'URL, ho cercato di convertire URL di stringa utilizzando toExternalForm(), ma malformato l'URL.

Qualche idea su un modo per aggirare questo?

EDIT: Non riesco a utilizzare System.setProperty poiché viene eseguito con un intero heap di altre applicazioni Java in tomcat.

secondo edit: non riesco a impostare una proprietà del sistema in quanto avrà la precedenza su tutte le altre applicazioni in esecuzione sul server, non posso usare jsocks come proxy si corre attraverso il proxy squid che non supporta SOCKS4/5

Qualsiasi aiuto apprezzato.

risposta

7

Non è così che funziona il proxy. Il modo in cui un proxy funziona è che si prende l'URL normale:

http://example.com/service 

e invece di guardare in alto "example.com" e la porta 80, il messaggio viene inviato al tuo host proxy invece (http://theproxy.com:5555).

Java ha incorporato la gestione proxy utilizzando le proprietà del sistema http.proxyHost e http.proxyPort.

Quindi nel tuo caso si avrebbe bisogno di fare:

System.setProperty("http.proxyHost", "theproxy.com"); 
System.setProperty("http.proxyPort", "5555"); 

Allora il vostro codice dovrebbe, idealmente, "solo lavoro".

Here è una pagina che documenta le proprietà del proxy.

+0

Sì, lo so proxy non funzionano così, ma solo cercando tutto . Soluzione interessante però, cercherò di tornare da te. Cheers – Rudiger

+0

In realtà non posso farlo perché questo imposta il tomcat per eseguire attraverso il proxy non solo l'istanza. :(Altri suggerimenti? – Rudiger

+0

Utilizzare una libreria proxy (jsocks, coniglio, ecc.) – mindas

Problemi correlati