虽然得到我的手脏RMI,我得到了一个java.rmi.NoSuchObjectException
例外,这使我这个问题: java.rmi.NoSuchObjectException:表中没有这样的对象 ,但我的问题是不同的 。
我在我的主要方法,因此在主线程创建IMPL对象。 如果我这样做:
FooImpl fi = new FooImpl();
foo = (Foo) UnicastRemoteObject.exportObject(fi, 0);
事情做工精细。
如果我这样做:
foo = (Foo) UnicastRemoteObject.exportObject(new FooImpl(), 0);
我看到FooImpl实例收集,然后我得到的上述异常。
foo
是我initializng在主静态参考; 和另一个远程对象返回foo
从它的方法之一。 因此,一个客户端获取远程对象,然后再获取foo
从它,然后调用一个方法foo
,这时候我得到的异常如上所述。 那么,为什么它发生这种方式?
编辑:这是我的主要方法
public static void main(String[] args) throws RemoteException, AlreadyBoundException
{
Server server = new Server();
Hello stub = (Hello) UnicastRemoteObject.exportObject(server, 0);
FooImpl fi = new FooImpl();
foo = (Foo) UnicastRemoteObject.exportObject(fi, 0);
Registry registry = LocateRegistry.getRegistry();
registry.bind("Hello", stub);
System.out.println("Server ready!");
}
在客户端,我越来越hello
,并呼吁它的方法,它给了我foo
,然后调用一个方法foo
。
EDIT2:如果我使用
Hello stub = (Hello) UnicastRemoteObject.exportObject(new Server(), 0);
并结合foo
先hello
,然后同样的异常被抛出时,我尝试访问hello
,因为现在它的这是越来越收集Server实例。 很奇怪的东西!