2016-05-24 16 views
0

bekam ein Problem mit meinem RMI-Test ...Java RMI - NoSuchObjectException: kein solches Objekt in der Tabelle

Server:

LocateRegistry.createRegistry(non-default-port); 
obj = new HelloImpl(); 
Naming.rebind("//ip-of-server/HelloServer", obj); 

Auftraggeber:

RMISocketFactory.setSocketFactory(new sun.rmi.transport.proxy.RMIHttpToCGISocketFactory()); 

obj = (Hello) LocateRegistry.getRegistry("ip of server", non-default-port).lookup("HelloServer"); 

obj.sayHello("test"); 
(nur via HTTP Proxy!)

Alle Objekte sind statisch in der Klasse ..

Aber ich bekomme eine "java.rmi.NoSuchObjectException: kein solches Objekt in der Tabelle" -Exception die ganze Zeit .. Dies geschieht nur, wenn ich den HTTP-Tunneling über

verwenden
RMISocketFactory.setSocketFactory(new sun.rmi.transport.proxy.RMIHttpToCGISocketFactory()); 

Wenn ich es ohne den HTTP-Tunneling versuchen (von einem anderen PC im normalen Netz), es funktioniert gut!

Was könnte das Problem sein?

Antwort

0

Sie werden dies von der sayHello() anstatt der lookup() bekommen. Die Bedeutung der Ausnahme besteht darin, dass der Stub 'alt' ist, d. H. Das entfernte Objekt wurde nicht exportiert, was wahrscheinlich bedeutet, dass es ebenfalls DGC ist. Sie sollten die folgenden versuchen, in dieser Reihenfolge, einer nach dem anderen:

  1. einen statischen Verweis auf den Wert von createRegistry() zurückhalten.

    selbst Dies sollte ausreichend sein, aber wenn es nicht ist:

  2. Halten Sie sich auf dem entfernten Objekt eine statische Referenz selbst, und nein, ich meine nicht seine Stummel. In diesem Fall obj.

Ich kann nicht erklären, warum es nur über HTTP-Tunneling geschieht, aber Sie sollten auf jeden Fall in allen Fällen tun (1), ist so wirklich es ein Fehler über irgendwelche Mittel geschehen warten.

+0

danke für Ihre Antwort! In meinem Client bereits als statisch deklariert: static Registry reg; \t statisch Hallo obj; aber das hat nicht funktioniert .. – naja08

+0

'createRegistry()' wird vom Server, nicht der Client aufgerufen. Ich beziehe mich auf den Server. – EJP

+0

Versucht, dass auch .. immer noch nicht funktioniert:/ – naja08