# Datenaustausch zwischen zwei Java-Programmen



## haimat (26. Jul 2010)

Hallo zusammen,

ich schreibe gerade eine Art Download-Tool, welches ich direkt aus dem Browser aufrufe (beim Öffnen bzw. Download einer Datei im Browser). Das File bzw. den Pfad dazu bekomme ich beim Java-Programm-Aufruf via args[], das ist kein Problem.

Wenn ich nun aber ein anderes File im Browser runterlade und via Java-Programm öffnen möchte, so soll dies nicht in einer neuen Instanz geschehen, sondern im bereits laufenden Java-Programm. Ich stelle mir vor, dass ich beim Starten des Programms checke, ob bereits eine Instanz läuft (das habe ich bereits umgesetzt). Die Frage ist nun nur noch, wie ich den Pfad zur neuen Datei an das bereits laufende Programm übermitteln kann, und zwar von der zweiten Instanz dieses Programms? Muss das via (TCP-)Sockets geschehen, oder geht das auch irgendwie einfacher, ohne dass ich in der ersten Instanz quasi auf einen solchen "connect" warten muss?

Danke im Voraus für jede Hilfe!

Viele Grüße, Matthias


----------



## chriis (26. Jul 2010)

Du könntest deine Anwendungen per RMI kommunizieren lassen. Die erste Anwendung gibt also eine Methode bekannt, die Dateien zum download entgegen nimmt. Wenn nun eine zweite Instanz der Anwendung gestartet wird, kann diese unter einer festgelegten Adresse mit der Ersten kommunizieren und die Datei so übermitteln.

Chris


----------



## haimat (26. Jul 2010)

... an RMI habe ich auch schon gedacht. Aber dazu braucht es doch einen eigenen RMI-Prozess im Hintergrund, oder? Ich würde gerne auf einen extra Prozess (Server) verzichten und stattdessen direkt zwischen den Java-Anwendungen kommunizieren.

VG, Matthias


----------



## SlaterB (26. Jul 2010)

einfacher ist nur noch ein Socket, auch dann entweder mit mehreren Threads im Programm 
oder die Hauptverarbeitung wartet am Server, gegebenenfalls mit Timeout und Schleife


----------



## haimat (26. Jul 2010)

@SlaterB: Danke, daran hatte ich auch schon gedacht. Allerdings muss ich dafür dann ja im Hauptprogramm (also in der ersten Instanz) laufend auf Requests warten, sprich in einer Schleife/Thread arbeiten. Das wäre meine Notlösung, eleganter fände ich allerdings eine Lösung, bei der ich ohne extra Prozess/Dienst (RMI) direkt eine Methode eines anderen Programms aufrufen kann, oder etwas Vergleichbares in dieser Art ...


----------



## L-ectron-X (26. Jul 2010)

Forumsuche? http://www.java-forum.org/allgemeine-java-themen/34662-verhindern-programm-mehrmals-geoeffnet.html

Dort werden verschiedene Varianten besprochen.


----------

