EIN Thread in RMI auf Serverseite

Status
Nicht offen für weitere Antworten.

frage

Mitglied
Guten Morgen!

ich arbeite zur Zeit mit RMI, und muss sagen, dass ich es wohl nicht so ganz verstanden habe.

In meiner Applikation habe ich mit RMI eine Kommunikation zw. 2 Java-Programmen hergestellt.

Die Applikation, die als RMI-Server fungiert, startet die 2. Applikation, die als Client dient. Der Client nimmt Berechnungen vor, und schickt die Ergebnisse an den Server über RMI.
Nun muss es so sein, dass in der Server - Applikation wieder der Thread verwendet werden muss, der vorher die Client-Applikation gestartet hat. Beobachte ich aber die Threads in meiner aktuellen Lösung, dann wird nach Empfang der Daten im Server ein anderer Thread verwendet, als der, der die Client-Applikation gestartet hat.

Ist das eine Eigenschaft von RMI, oder habe ich falsch programmiert?
Wie schaffe ich es, dass der Server nach Empfang der Daten vom Client den selben Thread benutzt, wie der, der zum Starten des Clients verwendet wurde?

Vielen Dank für jegliche Rückmeldungen!!
frage
 
S

SlaterB

Gast
ob irgendwelche Einstellen helfen weiß ich nicht,
günstig wäre vielleicht ein synchroner Aufruf:
der Starter ruft beim Client was auf und der RÜCKGABEWERT sind die benötigten Daten,
die kommen garantiert beim gleichen Thread an, eben genau beim Aufrufer, wie so in Java üblich,
der Aufrufer wäre dann aber für die Dauer der Berechnung blockiert

--------


mit Threads kann man hantieren wie mit anderen Objekten auch,

der Client-Starter-Thread kann sich nach dem Starten schlafen legen, wahrscheinlich mit wait(),
der Empfangs-Thread muss nun nur die Daten irgendwo ablegen und den Starter-Thread mit notify aufwecken,

damit sich alle kennen und gemeinsame Ablageflächen für Daten haben braucht es irgendeine Vermittlerstelle,
ein statisches Objekt/ Singleton, so dass z.B. jede Programmstelle

StarterThread sr = Registry.INSTANCE.getStarterThread();
synchronized(sr) {
sr.putData(neue Daten);
sr.notify();
}

aufrufen kann,

deiner Frage nach zu urteilen solltest du aber zunächst ein Lehrbuch zu Threads aufschlagen
und die Kommunikation + den Datenaustausch von Threads in kleinen Beispielen lernen
(Consumer + Producer-Beispiel)
 

frage

Mitglied
Hallo SlaterB,

vielen Dank für Deine Antwort!

Ich starte die Client-Applikation über eine Batch-Datei aus dem Kode heraus. Deshalb kommt direkt dort kein Rückgabewert an, und deshalb ist es wohl auch nicht der gleiche Thread, oder?
Der Client greift logischerweise auf die Methode am Server zu, die im Remote-Interface definiert ist.

Ja, den Verdacht hatte ich auch schon, dass ich mir mal ein Kapitel über Threads ansehen sollte ... :)

Viele Grüße,
frage
 
T

tuxedo

Gast
>> Beobachte ich aber die Threads in meiner aktuellen Lösung, dann wird nach Empfang der Daten im Server ein anderer Thread verwendet, als der, der die Client-Applikation gestartet hat.

AFAIK läuft doch der Server in RMI in einem eigenen Thread. Wäre ja auch "uncool" wenn der Serverthread der Main-Thread wäre und somit alles was im Main-Thread läuft blockieren könnte.

Verwendest du zufällig SWT oder warum muss das alles wieder in den Erzeuger-Thread hinein?

- Alex
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
OnDemand Thread und Ratelimiter Netzwerkprogrammierung 4
F Thread "extern" beenden Netzwerkprogrammierung 3
OnDemand Linux RAM per Thread Netzwerkprogrammierung 3
V Socket Audio Clip loopen ohne neuen Thread Netzwerkprogrammierung 2
C Thread Netzwerkprogrammierung 9
platofan23 Socket Hilfe mit Socket Thread und ArrayList Netzwerkprogrammierung 6
A RMI RMI - Thread Objekte übertragen und auf anderer Machine weiterlaufen lassen Netzwerkprogrammierung 0
S Socket ThreadPool oder Thread pro Client? Netzwerkprogrammierung 11
T Socket Server starten Thread Problem Netzwerkprogrammierung 12
P Wie spreche ich einen Thread an? Netzwerkprogrammierung 20
M Thread Scheduler Java 5.0? Netzwerkprogrammierung 2
7 Mehrere Verbindungen gleichzeitig in einem Thread mit ApacheHTTP Netzwerkprogrammierung 7
D Socket Dynamische Socket-Thread Erzeugung Netzwerkprogrammierung 2
B Socket Thread handling / Reader init Netzwerkprogrammierung 8
Z Socket Socket-Thread falsch? Netzwerkprogrammierung 5
Helgon Socket Thread Pooling Netzwerkprogrammierung 6
M Was macht Thread, wenn er aus einem "leeren" Inputstream liest ? Netzwerkprogrammierung 5
B callback thread udp Netzwerkprogrammierung 2
D RMI und Thread Netzwerkprogrammierung 4
S Kommunikationsproblem, Thread und manuel Netzwerkprogrammierung 4
U Socket Abhören eines Sockets/Ports in extra Thread Netzwerkprogrammierung 8
K ein Thread pro Stream Netzwerkprogrammierung 2
D Weiterer Thread auf Port 843 horcht Netzwerkprogrammierung 7
D Thread problem Netzwerkprogrammierung 3
S Thread, Daten vom Socket lesen Netzwerkprogrammierung 2
S Thread Transport Netzwerkprogrammierung 6
S Socket Thread in Schleife Netzwerkprogrammierung 4
G Objekte per TCP verschicken + Thread Netzwerkprogrammierung 4
T synchronized mit thread und rückgabe Netzwerkprogrammierung 4
Q Thread und Sockets... Netzwerkprogrammierung 2
2 Class mit ServerSocket erbt von Thread? Netzwerkprogrammierung 3
PAX Outputstream von anderem Thread verwenden lassen Netzwerkprogrammierung 5
C Server mit Multithreading (Thread-Pool) Netzwerkprogrammierung 2
E java.lang.NullPointerException aber nur wenns im Thread läuf Netzwerkprogrammierung 4
G Server Thread beenden Netzwerkprogrammierung 16
T Socket-Thread: Designfrage Netzwerkprogrammierung 14
S Mit Thread arbeitende Maschine Netzwerkprogrammierung 6
T select() ohne NIO - oder wie Worker-Thread sauber beenden? Netzwerkprogrammierung 9
K Selbe Streams mehrfach nutzen (zusätl. Thread) Netzwerkprogrammierung 6
ven000m Thread Frage Netzwerkprogrammierung 11
B Thread.start() (run()) excption Netzwerkprogrammierung 2
M Thread läuft nicht weiter Netzwerkprogrammierung 2
B NullPointerException | Thread Netzwerkprogrammierung 4
U Current thread not owner Netzwerkprogrammierung 3
S readline-thread stoppt vorzeitig Netzwerkprogrammierung 6
J RMI - (RemoteException occurred in server thread) Netzwerkprogrammierung 2
S Webserverprogrammierung: Thread-Beschränkung Netzwerkprogrammierung 2
M Exception in thread "main" java.lang.NoClassDefFou Netzwerkprogrammierung 2
F problem mit thread bzw. netzwerkverbindung! Netzwerkprogrammierung 3
L netzwerk mit thread Netzwerkprogrammierung 3
G RMI thread safe ? Netzwerkprogrammierung 11
A Thread gibt Nachrichten mehrmals aus (Messenger in Java) Netzwerkprogrammierung 3
G Was tun gegen Timeouts auf der Serverseite? Netzwerkprogrammierung 11
E Client/Server - Timer auf Serverseite Netzwerkprogrammierung 3

Ähnliche Java Themen


Oben