1
我有一個使用Java RMI的服務器和客戶端。如果我使用一個客戶端,下面的代碼都可以。但是,如果我連接到一個客戶端,然後再連接另一個客戶端,它會拋出已在使用中的端口異常。這很好,所以我斷開連接的客戶端,然後再次嘗試與第二個客戶端連接。它給了我這樣的:Java RMI NoSuchObjectException
java.rmi.NoSuchObjectException:表
這是爲什麼沒有這樣的對象?
//CONNECT
Registry registry = LocateRegistry.getRegistry(
Options.getRegistryIp(), Options.getRegistryPort());
server = (IServer) registry.lookup(Constants.MB_SERVER_NAME);
UnicastRemoteObject.exportObject(client, Options.getMyPort());
server.registerClient(client);
//DISCONNECT
server.removeClient(client, client.getUser());
UnicastRemoteObject.unexportObject(client, false);
當服務器嘗試獲取客戶端對象的用戶名時,我在registerClient()的第一行獲取它。但我不明白它是如何明確未導出的,因爲上面的行剛剛導出了對象,並且沒有其他事情在進行...... 如果我使用兩個客戶端並連接一個,那麼另一個,它會拋出端口在使用中。如果我斷開與第一個客戶端並退出,然後再次連接第二個客戶端它將工作沒有任何問題。只是如果我斷開第一個客戶端而不退出,我會得到這個錯誤。 – Lightforce 2011-02-14 02:05:49