# Problem mit RMI: no such object in table



## ThomasMo (28. April 2008)

Hallo zusammen,

folgende Situation liegt bei mir vor: Ich habe eine Java-Anwendung, in der Verschiedene Module über RMI Funktionen bereitstellen die dann von einer Webapplikation benutzt werden. Alle Module registrieren sich beim Start der Anwenundung an einer eigens dafür mitgestarteten RMI-Registry. Da das ganze idR auf dem gleichen Rechner läuft wie der Webserver registrieren sich fast alle Dienste im Normalfall mit Adresse"rmi://localhost:1099", zwei bekommen jedoch statt localhost eine Abfrage des Machine-Names aus dem Netzwerkadapter mit. Die Webanwendung greift idR ebenfalls über rmi://localhost... auf die Module zu.

Nun habe ich folgendes Problem: Ich habe die Anwendung, die normalerweise als Serverdienst läuft, über die Diensteverwaltung von Windows beendet und direkt danach als Applikation über einen java-Aufruf in der Konsole gestartet. Teilweise (reproduzierbar, aber nicht deterministisch) passiert es mir nun, dass sich die Webanwendung zwar an die rmi-Registry verbinden kann, ein Lookup für den unter dem Machine-Name registrierten Dienst mit der Meldung java.rmi.NoSuchObjectException: no such object in table endet. Interessant dabei: Ich habe mir ein Eclipse RMI-Plugin besorgt, wenn ich mich nun damit von meinem Entwicklungsrechner auf den Server verbinde bekomme ich den fraglichen Dienst angezeigt - er ist also prinzipiell registriert.

Mein Erklärungsversuch ist nun, dass ich durch den Applikationsstart kurz nach Beendung des Dienstes irgendwie in den Zustand gekommen bin, dass ich zwei RMI-Registrys auf dem Server am laufen habe, eine die alles mit rmi://localhost:1099/... übernimmt, eine die alles mit rmi://rechnername:1099/... übernimmt. Meine Frage: Wäre das prinzipiell möglich oder bin ich damit komplett auf dem Holzweg und muß eine andere Ursache des Problems suchen?  

Bin dankbar für jeden Gedanken dazu....


----------



## _jsd_ (28. April 2008)

Hi,

Also in sofern nicht ein Fehler in den DNS vorliegt sollte 127.0.0.1==localhost==rechnername sein und somit wäre auch der Service ( egal ob mir 127.0.0.1,localhost oder rechnername aufgerufen) immer der selbe...

Du solltest noch etwas mehr testen und den Fehler eingrenzen....

hmf

ps: auf http://www.gossi23.de gibts ein Testtool für CORBA/RMI welches Server/Clients simulieren und Kommunikation abhören kann...vieleicht wäre  das mal nen versuch Wert


----------



## ThomasMo (29. April 2008)

Das Tool werde ich mal austesten. Das 127.0.0.1==localhost==rechnername sein sollte ist mir schon klar, zumal ich eine Weile mit Netzwerkthemen gearbeitet habe. (Vielleicht noch als Zusatzinfo, dass das ganze in einer VM läuft.)

Aber es ist die einzige sinnvolle Erklärung die ich nach einiger Zeit die ich mit dem Problem beschäftigt bin habe... Und ich saß jetzt schon eine Weile dran... Aber deswegen wollte ich ja auch mal Eure Meinung hören.


----------

