RMI 激活奇怪问题

Posted

技术标签:

【中文标题】RMI 激活奇怪问题【英文标题】:RMI Activation Strange problem 【发布时间】:2009-12-28 05:03:58 【问题描述】:

我正在尝试让 RMI 可激活服务器工作 - 但到目前为止还没有运气。实际上服务器似乎在运行,但是客户端却触发了一个奇怪的异常。

我有 3 个项目:

客户 常见 服务器

常见的是客户端和服务器之间的共享代码(如远程接口)。

我遵循的步骤(一直在调整this tutorial):

启动注册表 --> 确定 运行 rmid --> 确定 开始服务器设置 --> 确定 启动客户端 --> BOOM!激活失败,因为在服务器线程中找不到带有 NoClassDefFoundError 的 common 中的类

我在服务器的代码库中包含了公共类文件,因此这些类/接口应该可供服务器使用。它在远程接口本身上消失了——所以唯一的选择似乎是将所有公共代码拉到服务器代码中,但是这样客户端代码将不得不知道服务器代码,这很糟糕。

我浏览了一下,看起来this guy here 遇到了完全相同的问题。

看起来在这两种情况下,当可激活服务器引用其他包中的类时都会发生这种情况(在我的情况下,它是第三方链接中的自定义包)。

我真的很迷茫 - 所以任何想法都会受到赞赏!

编辑:一些附加信息 - 我正在尝试调试问题。客户端似乎很好地检索了主题中的远程对象(引用不为空)。一旦调用远程接口的方法(客户端知道该接口),就会抛出异常。如果激活发生在第一个方法调用上,那么这很明显 - 但不太确定它何时实际尝试激活远程对象/服务器。

【问题讨论】:

【参考方案1】:

您是否在设置期间将 common 包中的类包含在服务器上可激活类的位置?如果您有多个路径,请确保用空格分隔它们。

【讨论】:

err ...我实际上错过了 ActivationDesc 的位置参数上的 common 类的路径 ...非常感谢您发现这个!

以上是关于RMI 激活奇怪问题的主要内容,如果未能解决你的问题,请参考以下文章

Java rmi漏洞利用及原理记录

应用程序再次激活时 CLLocationManager 的奇怪行为

为什么 jmeter 分布式测试,一定要设置 java.rmi.server.hostname

UISearchBar:奇怪的扩展动画

GCC,奇怪的整数提升方案

RMI 绑定问题(从 Windows RMI 服务器到 Ubuntu RMI 注册表)