L
logn
Gast
Hallo! Wollte mal fragen ob jemand von euch hierfür eine Lösung weiß:
Ich würde gerne von einem Prozess meiner VM auf einen anderen, der auf der gleichen Maschine (also in der gleichen VM) ausgeführt wird zugreifen, ohne ihn von dort aus aufgerufen zu haben. Am liebsten währe mir, wenn ich mir von diesem Prozess ein Objekt holen könnte. Die Frage ist, ob ich einen bestimmten Prozess der VM irgendwie addressieren und zurückgeben lassen kann.
Hintergrund ist folgender:
Im Augenblick rufe ich in meinem Programm ein Programmteil auf, indem ich ihn einfach also Objekt instantiiere (ganz normal) (new MeinProgrammteil(...)). Damit bekomme ich die Refrenz auf das Objekt und kann mit Hilfe der Objekt-Methoden damit kommunizieren.
Das Problem ist nun, dass ich mehrere Instanzen meiner Applikationen laufen haben kann, welche alle diesen Programmteil benötigen (und zwar ein und dieselbe Instanz von ihm).
Würde ich bei jeder dieser Instanzen immer den Programmteil als Objekt instantiieren, würde ich natürlich verschiedene Objekt erstellen. Es ist jedoch sehr wichtig, dass alle Instanzen der Applikation auf genau eine Referenz (also eine Instanz des Programmteils) zugreifen, da dieser Programmteil alle Anfragenden Applikationsinstanzen kennen muss. Dieser Programmteil stellt so etwas wie ein Plugin für die Applikationsinstanzen dar, nur dass es halt nur eine Instanz von ihm gibt.
Das Problem ist also: Wie gebe ich den anfragenden Applikationsinstanzen allen die gleiche Referenz auf den "Plugin"-Programmteil?
Mein erster Einfall war, dass ich mein Plugin-Programmteil als Singleton implementiere. Das geht aber natürlich nicht, da die anfragenden Applikationsinstanzen alle separate Prozesse in der VM sind und somit für jede Applikations-Insanz ein neues Plugin-Programmteil-Objekt erstellt wird.
Darum kommt eigentlich nur in Frage, den Plugin-Programmteil auch als separaten Prozess zu starten und dann alle Applikationsinstanzen mit ihm zu verbinden. Für eine Applikationsinstanz geht das wohl relativ einfach, indem ich den Plugin-Programmteil von der Applikationsinstanz aus starte und dann über Streams mit ihm kommunizieren könnte.
Problematisch wird es dann bei weiteren Applikationsinstanzen. Die kennen ja den bereits von einer anderen Applikationsinstanz gestarteten Prozess nicht.
Ich hoffe die Beschreibung ist verständlich (schwer zu Beschreiben :cry: )!
Vielleicht hat ja einer von euch eine Idee?
Ich würde gerne von einem Prozess meiner VM auf einen anderen, der auf der gleichen Maschine (also in der gleichen VM) ausgeführt wird zugreifen, ohne ihn von dort aus aufgerufen zu haben. Am liebsten währe mir, wenn ich mir von diesem Prozess ein Objekt holen könnte. Die Frage ist, ob ich einen bestimmten Prozess der VM irgendwie addressieren und zurückgeben lassen kann.
Hintergrund ist folgender:
Im Augenblick rufe ich in meinem Programm ein Programmteil auf, indem ich ihn einfach also Objekt instantiiere (ganz normal) (new MeinProgrammteil(...)). Damit bekomme ich die Refrenz auf das Objekt und kann mit Hilfe der Objekt-Methoden damit kommunizieren.
Das Problem ist nun, dass ich mehrere Instanzen meiner Applikationen laufen haben kann, welche alle diesen Programmteil benötigen (und zwar ein und dieselbe Instanz von ihm).
Würde ich bei jeder dieser Instanzen immer den Programmteil als Objekt instantiieren, würde ich natürlich verschiedene Objekt erstellen. Es ist jedoch sehr wichtig, dass alle Instanzen der Applikation auf genau eine Referenz (also eine Instanz des Programmteils) zugreifen, da dieser Programmteil alle Anfragenden Applikationsinstanzen kennen muss. Dieser Programmteil stellt so etwas wie ein Plugin für die Applikationsinstanzen dar, nur dass es halt nur eine Instanz von ihm gibt.
Das Problem ist also: Wie gebe ich den anfragenden Applikationsinstanzen allen die gleiche Referenz auf den "Plugin"-Programmteil?
Mein erster Einfall war, dass ich mein Plugin-Programmteil als Singleton implementiere. Das geht aber natürlich nicht, da die anfragenden Applikationsinstanzen alle separate Prozesse in der VM sind und somit für jede Applikations-Insanz ein neues Plugin-Programmteil-Objekt erstellt wird.
Darum kommt eigentlich nur in Frage, den Plugin-Programmteil auch als separaten Prozess zu starten und dann alle Applikationsinstanzen mit ihm zu verbinden. Für eine Applikationsinstanz geht das wohl relativ einfach, indem ich den Plugin-Programmteil von der Applikationsinstanz aus starte und dann über Streams mit ihm kommunizieren könnte.
Problematisch wird es dann bei weiteren Applikationsinstanzen. Die kennen ja den bereits von einer anderen Applikationsinstanz gestarteten Prozess nicht.
Ich hoffe die Beschreibung ist verständlich (schwer zu Beschreiben :cry: )!
Vielleicht hat ja einer von euch eine Idee?