我有两个使用 RMI 对象进行通信的应用程序。我确实有一个接口、一个实现类和生成的存根类。

我认识到, impl 类中的一些更改需要我创建一个新的存根类。

我的问题是,我可以在不重新编译存根的情况下进行哪些更改?

据我所知:

  • 我无法更改方法结构(添加,删除,更改方法)
  • 我可以在IMPH类正在使用的类中添加serialversionuid吗?
  • 我可以更改IMPH类正在使用的类吗?
  • 我可以记录 impl 和所有使用的类吗?

我问这个问题是因为我在本周初做了更改,现在 RMI 连接已断开。但我只添加评论并更新了我的检查样式。所以我添加了串行版本 UID 并将一些类更改为最终版本。

有帮助吗?

解决方案

如果更改任何方法签名(包括添加和删除),您只需重新运行 rmic 并生成部署类。生成的代码只是通过类的定义方法将远程调用对象链接到实际实现。

这意味着您可以毫无问题地更改 impl 代码(方法签名除外)以及 impl 类使用的任何类的代码。如果实现使用的那些类也是方法签名的一部分,那么客户端将需要适当的版本来匹配远程实现,但这不是 RMI 特定的。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top