# Proxyfähige Javaanwendung?



## volker_07 (11. Jan 2008)

Hallo,
ich bin kein Java-Programmierer. Daher meine Frage als völlig Unwissender. Neulich kam die Frage auf, ob eine Java-Anwendung proxyfähig sei. Es handelt sich dabei um eine Anwendung, die auf einem Server liegt und von einem Client gestartet wird. Nun ist die Frage, was zwischen dem Server und dem Client, die sich in unterschiedlichen Netzen befinden überhaupt übertragen wird. Kommt das, was da an Datenströmen fließt, durch einen Proxy? Oder noch weiter gefasst: Wann kann man denn eine Anwendung als proxyfähig bezeichnen?
Vielen Dank schonmal


----------



## HoaX (11. Jan 2008)

eigentlich kann jede javaanwendung mit proxies. den kann man global im ControlPanel einstellen.


----------



## volker_07 (12. Jan 2008)

Befindet sich das Control Panel in der Java-Entwicklungsumgebung?
Ich hole noch mal ein bißchen aus: Dieses Java-Programm ist nicht webbasiert und wird auf einem Server direkt mit dem .jar-File aufgerufen. Es ist ein Fremdprodukt und kann von uns nicht geändert werden. Es hat den Verwendungszweck, dass aus mehreren entfernten Netzen auf das Programm zugegriffen wird. Jedes der externen Netze hat dabei seinen eigenen Proxy. Deswegen wäre es für mich wichtig zu wissen, was genau bei der Programmausführung vom Server auf den Client übertragen wird, also was für einen Datenstrom den jeweiligen Proxy passieren muss und welche Datenströme dabei evtl. Probleme bereiten könnten.


----------



## tuxedo (14. Jan 2008)

Ich würde sagen das kommt auf die Kommunikation an.

Wenn eine URLConnection genutzt wird, dann sollte das mit den Proxys über das ControlPanel funktionieren. 

Kommen allerdings "stinknormale" Socket-Verbindungen zum Einsatz, so wirds schon nicht mehr gehen. 

Kommt RMI zum Einsatz, so kann man den "Umweg" über HTTP gehen (RMI over HTTP). Das ganze wird dann allerdings langsamer. Und je nach Art der Konfiguration des Programms, hat man da unter Umständen gar keinen Einfluss auf die RMI-Konfiguration und kann das nicht anpassen.

Möglich wäre auch, das ganze zu "tunneln":

Durch die (Firmen-)Proxys gehen meist nur Verbindungen auf Port 80 für HTTP, auf 443 für HTTPS und 21 für FTP. Das war's dann auch meist schon. Du könntest jetzt auf dem Server einen SSH-Server laufen lassen der auf Port 443 horcht (geht natürlich nur wenn dort kein Webserver mit HTTPS läuft). Die Clients öffnen dann über diesen Port 443 eine SSH-Verbindung, durch welche sie die notwendigen Ports für die Java-Anwendung tunneln. Die Clients müssen dann lediglich eine Verbindung zu localhost, also zum lokalen Tunnel herstellen, statt direkt zur Adresse des Servers. Aber auch hier: Das kommt drauf an wie die Verbindungstechnik zwischen Client und Server aussieht. 

- Alex


----------



## Angel4585 (5. Feb 2008)

:lol: wie mache ich das dann wenn ich mein Spiel mal fertig hab un ausm Geschäft heraus mich einloggen will? Da hab ich einen Proxy dazwischen..


----------



## tuxedo (5. Feb 2008)

Wer lesen kann ist klar im Vorteil :lol: .. Schau doch nochmal was ich zum Thema "tunneln" geschrieben hab.


----------



## Angel4585 (5. Feb 2008)

ja aber wenn das mit dem tunneln nicht geht?
Irgendwo muss ich doch auch zB für RMI die Proxydaten angeben können oder?
Wie ist das bei SIMON?


----------



## tuxedo (5. Feb 2008)

Proxy hat in erster Linie (so seh ich das) was mit HTTP zu tun. DIe allermeisten Firmenproxys sind also darauf ausgelegt HTTP-Verbindungen zu vermitteln. Normale "Socketverbindungen" gehen oftmals auch. Und wenn, dann nur auf den Ports für die der Proxy gedacht ist (also 80 und 443, viel mehr wird in den meisten Firmen nicht möglich sein).

D.h. du müsstest deine Anwendung auf einen dieser Ports umbasteln, ODER du tunnelst. Dann kannst du die Ports entsprechend umleiten und musst deine Anwendung nicht allzusehr verbiegen. 

Bei SIMON ist das wie bei RMI, nur mit dem Unterschied dass eine Socket-Verbindung ausreicht (auch für die Callbacks).

- Alex


----------



## tuxedo (6. Feb 2008)

Ach ja: RMI hat ein weiteres Features was es erlaubt über HTTP statt über irgendwelche anderen Socketverbindungen zu kommunizieren. Dazu brauchst du auf RMI-Serverseite einen Webserver und irgend so ein CGI-Script. Hab das selbst noch ncith probiert, aber ich hab gelesen das wäre sch**sse langsam.

Socket-Verbindungen über einen Proxy sind btw kein "java only problem".


----------

