Advanced
Java
Services
|
Proxy Einstellungen |
basics
Während man zuhause mit seiner privaten Maschine problemlos mit der Klasse URLConnection
arbeiten kann, wird man in einem internen Netzwerk dann keinen Erfolg haben, wenn, wie üblich,
das interne Netzwerk durch einen Proxyserver vom WWW abgeschirmt wird. Browser etwa müssen dann
die IP-Adresse des Proxyservers kennen, damit sie die vom Benutzer eingegebenen URLs an diese
Adresse weiterleiten können. Die Anfragen auf Weiterleitung an den Proxyserver werden (natürlich)
über einen eigenen Port abgewickelt, der nicht der HTTP-Port 80 sein kann. Quasistandard für diese
Anfragen ist der Port 3128, aber das ist nicht zwingend. Über IP-Adresse und Port kann der
Verwalter des Netzes Auskunft geben.
Die weiterzuleitenden Anfragen werden nach dem Übertragungsprotokoll unterschieden. Es werden
vier verschiedene Standardprotokolle unterstützt:
Für Anfragen nach den ersten drei Protokollen wird meist der gleiche Port (3128) benützt.
Setzen der Proxyeinstellungen
SystemProperties
Auch JavaApplikationen, die eine Netzverbindung aufbauen, müssen hinter einem Proxy ihre
Anforderungen an diesen weiterleiten. Wie ein Browser macht das die JavaVirtualMachine zur Laufzeit
automatisch, vorausgesetzt sie weiß, daß ein Proxy existiert. Dazu wird die Tabelle der
Systemproperties nach entsprechenden Einträgen durchsucht. Diese Tabelle ist eine Sammlung von
key/value Paaren, in denen Informationen über die lokale Machine und über die JRE hinterlegt ist.
Sie wird beim Start eine Javaprogramms automatisch generiert und ist über die statische Methode
abrufbar. In diese Tabelle muß man (am besten) beim Start eines Programms der JRE mitteilen, daß
die Anwendung hinter einem Proxy ins Netz geht. Hat man das erledigt, arbeitet man mit der Klasse
URLConnection genauso wie ohne Proxy.
Setzen der SystemProperties für einen Proxy
Dies muß für jedes Protokoll geschehen (genau wie bei einem Browser), ist aber jeweils in zwei
Zeilen erledigt:
String host="202.194.210.9"; String port="3128"; System.setProperty("http.proxyHost", host); System.setProperty("http.proxyPort", port);
String host="202.194.210.9"; String port="3128"; System.setProperty("ftp.proxyHost", host); System.setProperty("ftp.proxyPort", port);
String host="202.194.210.9"; String port="3128"; System.setProperty("https.proxyHost", host); System.setProperty("https.proxyPort", port);
String host="202.194.210.9"; String port="4321"; System.setProperty("socksProxyHost", host); System.setProperty("socksProxyPort", port);
Die Einträge sind transient
Diese Einträge werden beim Beenden der Applikation nicht gespeichert. Eine andere Applikation
bekommt also eine saubere Propertiestabelle !