RMI NoSuchObjectException異常

 

RMI NoSuchObjectException異常

<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

 

 

java.rmi.NoSuchObjectException: no such object in table

        at sun.rmi.transport.StreamRemoteCall.exceptionReceivedFromServer(StreamRemoteCall.java:247)

        at sun.rmi.transport.StreamRemoteCall.executeCall(StreamRemoteCall.java:223)

        at sun.rmi.server.UnicastRef.invoke(UnicastRef.java:126)

at com.nineday.ServiceImpl_Stub.doService(Unknown Source)

              … …

             

 

 

異常的含義是:試圖調用遠程虛擬機上已不存在的對象上的方法。這個問題很隱蔽,現象是有時候拋這個異常,有時候調用正常。

 

問題的原因:由於在遠程服務器export匿名遠程對象,

Remote stub = UnicastRemoteObject.exportObject(new ServiceImpl(), 9999);

匿名對象沒有引用,導致隨時可能會被JAVA垃圾回收器回收,所以出現了上述現象。

 

       把代碼改成如下即可:

       static ServiceImpl  service = new ServiceImpl()

Remote stub = UnicastRemoteObject.exportObject(service, 9999);

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章