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 激活奇怪问题的主要内容,如果未能解决你的问题,请参考以下文章
应用程序再次激活时 CLLocationManager 的奇怪行为