首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Linux上的java.rmi.NoSuchObjectException

Linux上的java.rmi.NoSuchObjectException
EN

Stack Overflow用户
提问于 2013-01-24 20:54:57
回答 2查看 684关注 0票数 0

我正在开发两个通过RMI连接的应用程序。通信是双向的,一切都很好,直到我在windows上运行。当我将jar文件带到Debian时,连接失败并返回java.rmi.NoSuchObjectException

你知道linux有什么不同吗?或者为什么它不能工作?

编辑:我的代码:

服务器端:

代码语言:javascript
运行
复制
static Registrator clientRegistrator = null; // static field, interface extending java.rmi.Remote
...
Registry rmiRegistry = LocateRegistry.createRegistry(RmiConstants.RMI_REGISTRY_PORT);
clientRegistrator = (Registrator) UnicastRemoteObject.exportObject(new RmiClientRegistrator(networkListeners), RmiConstants.RMI_REGISTRY_PORT); // RmiClientRegistrator implements Registrator interface
rmiRegistry.bind(RmiConstants.RMI_SERVER_MARK, clientRegistrator);

客户端:

代码语言:javascript
运行
复制
static Registrator serverRegistrator = null;
String rmiConnectionString = "rmi://localhost:" + RmiConstants.RMI_REGISTRY_PORT + "/" + RmiConstants.RMI_SERVER_MARK;
serverRegistrator = (Registrator) Naming.lookup(rmiConnectionString);
serverRegistrator.registerClient(dataReceiver); // fails here, with mentioned exception
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-01-25 06:18:29

存根引用的远程对象不再存在。更准确地说,它不再被导出。当客户端仍然有一个活动存根时,这种情况不应该发生,除非您自己取消导出它,或者除非网络分区导致DGC失败。

对此最可靠的补救方法是在从中导出远程对象的JVM中保留对远程对象的静态引用。

票数 2
EN

Stack Overflow用户

发布于 2013-01-24 20:58:13

你在这里看到了吗:

java.rmi.NoSuchObjectException: no such object in table

Java RMI NoSuchObjectException

here

如果试图在远程虚拟机中不再存在的对象上调用方法,则会抛出NoSuchObjectException。如果NoSuchObjectException在试图调用远程对象上的方法时发生,则可以重新传输该调用,并且仍然保留RMI的“至多一次”调用语义。NoSuchObjectException也由java.rmi.server.RemoteObject.toStub方法以及java.rmi.server.UnicastRemoteObject、java.rmi.activation.Activatable和的unexportObject方法引发

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14501873

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档