Zugriff auf anderen Prozess der VM

Status
Nicht offen für weitere Antworten.
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?
 
L

logn

Gast
Ich dachte auf einer Maschine (mit einem Prozessor) gibt es nur eine VM, welche alle Java-Programme ausführt. Stimmt das nicht? Falls nicht, weiß ich natürlich nicht ob die alle in einer laufen.
 

Wildcard

Top Contributor
Nein. Jeder Prozess läuft in einer eigenen VM (wenn du dir nicht schnell eine eigene geschrieben hast).
 
L

logn

Gast
Oh, das wusste ich nicht. Dann laufen also 2 bis viele VMs. Mindestens eine Applikationsinstanz die den besagten Programmteil benötigt und der besagte Programmteil selbst. Werden dann die Prozesse der unterschiedlichen VMs genauso separat gehalten als würde ich z.B. mit ProcessBuilder ein völlig anderes Programm (kein Java-Programm) aufrufen oder gibt es zwischen Java-Programmen eventuell eine bessere Möglichkeit zu kommunizieren?
Es würde auch gehen, dass ich den Programmteil von einer Applikationsinstanz aus als eigenen Prozess starte und den anderen Applikationsinstanzen eine Referenz darauf gebe.
Nur müssten sich dazu die Applikationsinstanzen kennen. Sie müssen aber unabhängig voneinender gestartet werden. Bekommt man das irgendwie hin?
 

Wildcard

Top Contributor
Prozess ist Prozess, völlig egal ob Java oder nicht.
Mit einem anderen Prozess kannst du direkt erstmal nur über den Stream kommunizieren und indirekt über Socket oder Ähnliches. Bei Java kommt dann zusätzlich noch RMI in Frage.
 
L

logn

Gast
Ist es denn möglich mir die Referenz auf einen bestimmten Prozess zu holen wenn er von einer anderen Instanz erzeugt wurde, um die Ein-und Ausgabe per Stream verbinden zu können? Oder geht das immer nur von der Instanz, die den Prozess gestartet hat?
 

Murray

Top Contributor
Man kann natürlich auch dafür sorgen, dass wirklich mehrere Programme in einer VM laufen; dazu braucht man ja nur ein Mini-Programm, das die entsprechenden Klassen mit Class#forName lädt, sich mit Class#getDeclaredMethod die main-Methoden holt und diese dann jeweils in einem eigenen Thread ausführt.

Allerdings
- haben dann alle Programme die gleichen System-Properties etc.
- muss der Classpath so gesetzt sein, dass sämtliche Klassen, die von irgendeiner der Anwendungen gebraucht werden, darin enthalten sind (dadurch müssen alle Programme die gleichen Versionen irgendwelcher Libs verwenden)
- beendet ein System#exit in einem Programm gleich alle anderen
 
L

logn

Gast
Ja, das wäre ja so etwas wie ein Konatiner, indem man dann die Instanzen laufen lässt. An so etwas habe ich auch schon gedacht, aber nach einer anderen Lösung gesucht, weil dieser 'Kontainer' dann das Instanziieren der andern Applikationen übernehmen muss. Die Applikationen sollten aber nach Möglichkeit unabhängig voneinander startbar sein.
An die ganzen von dir beschriebenen negativen Eigenschaften dieses Vorgehens habe ich jedoch noch nicht gedacht.

Könnte man diese nicht vielleicht umgehen, wenn man anstelle von Threads neue Prozesse (z.B. mit ProcessBuilder) startet und mit denen dann bei Stream kommuniziert?
Man benötigt zwar dann immer noch einen zentralen Prozess der alle anderen startet (was ich eigentlich vermeiden wollte), aber hätte dann nicht mehr diese starke Abhängigkeit wie bei Threads.

Naja, ich denke ohne einen gemeinsamen 'Punkt' der alle anderen kennt, wird es wohl nicht gehen.
Mit JNI hab ich noch nie was gemacht. Ich denke das wäre für mein Vorhaben auch zu aufwendig.

Vielen Dank euch beiden für eure Hilfe!
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
sascha-sphw Java 9 module Zugriff auf eine resource einer anderen JAR Allgemeine Java-Themen 0
Sonecc Zugriff auf Class File einer anderen Jar während der Laufzeit Allgemeine Java-Themen 2
LucasGlockner Effizienter byte-Zugriff auf ein long[]-Array Allgemeine Java-Themen 8
W Klassen Zugriff auf ein Textfile aus allen Klassen. Allgemeine Java-Themen 2
izoards Zugriff auf gemeinsame Ressource (CSV-File) Allgemeine Java-Themen 3
S Java Zugriff auf Netzwerklaufwerk Allgemeine Java-Themen 1
KeexZDeveoper Zugriff auf Methoden vom Server Allgemeine Java-Themen 7
O Zugriff auf mySQL ohne JDBC Allgemeine Java-Themen 3
P Element einer Liste wurde hinzugefügt, aber es gibt keinen Zugriff Allgemeine Java-Themen 2
B Maven Zugriff auf files aus einem kompilierten jar Allgemeine Java-Themen 15
S Zugriff auf jUnit Test Suite Runner-Instanzen innerhalb von Test Classes Allgemeine Java-Themen 7
W Zugriff auf Objektvariablen vs. Übergabe Allgemeine Java-Themen 3
J Zugriff auf erstellte Objekte einer Klasse von einer Klasse ausserhalb Allgemeine Java-Themen 3
Tommy Nightmare HTTP Zugriff auf Internetseite im Loginbereich Allgemeine Java-Themen 5
H Zugriff auf PHP Allgemeine Java-Themen 4
B DB-Zugriff einer Webanwendung funktioniert nicht mit Java 7 Allgemeine Java-Themen 2
M WebService - Zugriff auf Webservice Methode über Browser Allgemeine Java-Themen 1
O JNA Zugriff auf Funktion aus DLL Allgemeine Java-Themen 0
O Zugriff auf Windows Zertifikatstore Allgemeine Java-Themen 2
M Kein Zugriff auf microSD Karten Allgemeine Java-Themen 4
T Zugriff auf Datenbank Allgemeine Java-Themen 1
J Zugriff auf IMAP GMail Konto scheitert. Allgemeine Java-Themen 2
P Frontend- Zugriff auf WS- Backend Allgemeine Java-Themen 0
U Zugriff auf Datei sperren Allgemeine Java-Themen 5
N Best Practice Semi-Synchronized Zugriff Allgemeine Java-Themen 0
C Zugriff auf Event felder Allgemeine Java-Themen 0
M Threads synchroner Zugriff (add/delete/read) auf eine Liste Allgemeine Java-Themen 6
F Zugriff Verweigert bei Kopieroperation? Allgemeine Java-Themen 4
T JNI: kein Zugriff auf VM in Callback-Methode eines Windows-Hooks Allgemeine Java-Themen 3
S Dynamischer Zugriff Allgemeine Java-Themen 4
Minonos Einem Programm Zugriff auf bestimmte Ordner geben Allgemeine Java-Themen 5
E Zugriff auf Dateien im Filesystem überwachen Allgemeine Java-Themen 5
H Programierstil: static - Zugriff vs. Staticzugriff Allgemeine Java-Themen 24
V Zugriff auf den Objekterzeuger? Allgemeine Java-Themen 4
M Zugriff zweier Threads auf diesselbe Methode Allgemeine Java-Themen 16
B Zugriff auf eine HashMap Allgemeine Java-Themen 4
B JApplet Zugriff auf Local Storage des Browser? Allgemeine Java-Themen 2
D Zugriff auf Array-Liste Allgemeine Java-Themen 19
M gleichzeitiger Zugriff auf eine Textdatei Allgemeine Java-Themen 6
D Eclipse Kein Zugriff auf Inhalt einer referenzierten .jar Allgemeine Java-Themen 5
B synchronisierter zugriff auf Objekt Allgemeine Java-Themen 6
nutellastulle Zugriff, Übergabe, Bearbeitung und Ausgabe von Jlist Allgemeine Java-Themen 6
U Große Liste von Strings mit indiziertem Zugriff Allgemeine Java-Themen 31
J XML Element Zugriff Allgemeine Java-Themen 4
P Daten kopieren mit nio - Zugriff verweigert Allgemeine Java-Themen 8
M Klassen Zugriff auf getMethode ohne Klasse zu erzeugen Allgemeine Java-Themen 6
A Input/Output Applet-Zugriff auf PHP-Schnittstelle (externer Server) Allgemeine Java-Themen 22
H Vererbung Abgeleitete Klassen und Zugriff Allgemeine Java-Themen 2
C Probleme mit dem Zugriff auf private Methode per reflection Allgemeine Java-Themen 2
J Zugriff auf Poker-Client Fenster Allgemeine Java-Themen 14
C Zugriff auf private Methode per reflection geht nicht mehr Allgemeine Java-Themen 3
S Zugriff auf innere Klasse Allgemeine Java-Themen 3
D Kein Zugriff auf WebService ausser localhost Allgemeine Java-Themen 4
J Zugriff auf Dateien auf einem shared Folder? Allgemeine Java-Themen 3
H Zugriff auf VBA in Java Allgemeine Java-Themen 2
Haave Audio Device Unavailable: Kein gleichzeitiger Zugriff auf Soundsystem möglich Allgemeine Java-Themen 7
G Letzter Zugriff auf Datei Allgemeine Java-Themen 5
C java.io.FileNotFoundException: (Zugriff verweigert) Allgemeine Java-Themen 14
O Zugriff auf Serielle Schnittstelle - Keine Ports gefunden. Allgemeine Java-Themen 8
C Webstart: Zugriff auf lokale Dateien? Allgemeine Java-Themen 2
X Zugriff auf ComboBoxen in Hauptklasse von zweiter Klasse aus Allgemeine Java-Themen 8
J Zugriff auf gemeinsame Funktionen Allgemeine Java-Themen 4
Airwolf89 Zugriff auf ArrayList<ArrayList> Allgemeine Java-Themen 3
Airwolf89 Zugriff auf Werte in ArrayList<ArrayList> Allgemeine Java-Themen 4
T Zugriff zwischen Klassen für repaint Allgemeine Java-Themen 7
N Zugriff auf eine Referenzvar. Allgemeine Java-Themen 3
S Zugriff auf Klasse Allgemeine Java-Themen 4
Meldanor Mehrdimensionale Arrays : Zugriff auf n-tes Array Allgemeine Java-Themen 5
E JNA:Zugriff auf Common-Block von Fortran bzw. Struct in C Allgemeine Java-Themen 2
T Zugriff auf Singleton verkürzen - Namespaces?? Allgemeine Java-Themen 20
L Zugriff auf ein Objekt mit mehreren Threads Allgemeine Java-Themen 11
Airwolf89 dynamischer Zugriff auf Variablen/ Objekte Allgemeine Java-Themen 4
S Zugriff auf einzelne Bildpunkte Allgemeine Java-Themen 3
D Referenzen weiterreichen vs. statischer Zugriff Allgemeine Java-Themen 3
V Zugriff auf Default-Package? Allgemeine Java-Themen 6
P RegeEx-Problem: Zugriff auf group Allgemeine Java-Themen 2
M Zugriff auf Parallel-Schnittstelle Allgemeine Java-Themen 2
B Zugriff mit einem Applet auf den Datenträger Allgemeine Java-Themen 11
S Innere Klasse: Zugriff auf äußere Variable Allgemeine Java-Themen 5
I Zugriff auf Daten Allgemeine Java-Themen 5
T Zugriff per Reflection o.ä. möglich? Allgemeine Java-Themen 18
D Zugriff auf Windows Dienste Allgemeine Java-Themen 7
G Zugriff auf Memberclasses einer geladenen Class-Datei Allgemeine Java-Themen 2
I Gleichzeitiger zugriff auf ein Long über Threads Allgemeine Java-Themen 2
P Wieso HashMap-Zugriff mit Object, statt mit MyObject? Allgemeine Java-Themen 12
J Kein Zugriff auf Klassen im Default Package Allgemeine Java-Themen 8
M Paralleler Zugriff auf statische Methode Allgemeine Java-Themen 5
S Zugriff auf unterschiedliche JREs Allgemeine Java-Themen 7
M "Unzulässiger Zugriff auf einen Speicherbereich" Allgemeine Java-Themen 7
A Zugriff auf Parallelport nur über Eclipse nicht über .jar ! Allgemeine Java-Themen 12
G Zugriff auf ein sama share Allgemeine Java-Themen 8
J Java zugriff auf Exchange Server Allgemeine Java-Themen 10
D eclipse: Zugriff auf Ordner per code Allgemeine Java-Themen 4
O Konkurrierender Zugriff auf Log-Datei mit Log4J Allgemeine Java-Themen 11
Caracasa [Threads] Gleichzeitiger Zugriff auf eine LinkedList Allgemeine Java-Themen 9
L Zugriff auf Objekt das sich in einer Liste befindet Allgemeine Java-Themen 2
J Zugriff auf den Namen einer Variablen Allgemeine Java-Themen 7
J Zugriff auf Map in anderer Klasse Allgemeine Java-Themen 2
J Endlosschleife durch wechselseitigen Zugriff zweier Klassen? Allgemeine Java-Themen 2
F Zugriff auf lokalen Rechner wer weiss Rat ? Allgemeine Java-Themen 16

Ähnliche Java Themen

Neue Themen


Oben