【问题标题】:How to easily maintain the RMI interfaces across multiple applications like server and client?如何轻松维护跨多个应用程序(如服务器和客户端)的 RMI 接口?
【发布时间】:2012-07-07 04:48:21
【问题描述】:

任何与 RMI 打交道的人肯定会遇到这样的两难境地:如何轻松地维护对象接口,为其他客户端应用程序提供远程方法调用服务。每当我们决定对接口中声明的方法声明或添加/删除方法进行细微更改时,我们必须手动复制所有将使用该接口从远程服务器访问 RMI 服务的客户端中的更改。

【问题讨论】:

    标签: java interface rmi


    【解决方案1】:

    考虑拥有一个可下载(Serializable)代理,该代理具有客户端使用的更稳定的接口,并使用远程接口完成其工作。您可以使用代码库功能来确保其对所有客户端的可用性。代理需要包含存根。您可以将代理绑定到注册表,或从其他远程方法返回。

    或者,使用 JWS 分发新版本的客户端。

    或者,更稳定地设计您的远程接口,这样它们就不必更改 -:)

    【讨论】:

    • 通过可序列化代理,您的意思是在 RMI 中有一个额外的抽象层来引导分层服务模型吗?如果是这样的话,那么我猜它可能会在设计级别的应用程序架构方面开辟一些新的选择。感谢您指出这一点,如果您还有其他意思,请纠正我...
    【解决方案2】:

    我想出的一个很好的解决方法是

    1. 把RMI服务器提供的所有接口放在一个单独的 项目在构建时会将自身打包到一个 jar 文件中。
    2. 然后只需将该 jar 文件添加为依赖项或在 服务器应用程序的类路径,旨在提供 RMI 服务以及任何客户端应用程序 希望使用这些接口来调用远程方法。

    这将简化维护 RMI 接口的任务,只需在一个地方更新它们。在某些接口中更改方法签名的额外工作将仅限于更改调用该方法的应用程序代码。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-09
      • 2013-01-19
      • 2017-09-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多