gpt4 book ai didi

java - 通过不同JVM的接口(interface)实现

转载 作者:行者123 更新时间:2023-12-01 16:42:12 24 4
gpt4 key购买 nike

假设您有接口(interface)定义。

该接口(interface)可以操作

然后,您有两个应用程序在不同的 JVM 中运行,并通过交换操作实例以某种方式进行远程通信。

我们称它们为应用程序A和应用程序B

如果应用程序A使用应用程序B的类路径中不可用的类实现Operation,则应用程序B将 仍然能够处理该接口(interface)的实现吗?即使 B 位于不同的 JVM 中?

最佳答案

这取决于您的“以某种方式远程通信”部分所发生的魔力。

如果这种通信是通过 RMI 或类似技术完成的,那么就可以了。应用程序 B 将创建一个到 JVM A 中的 Operation 对象的远程代理,并且调用该代理上的方法会生成对 JVM A 的 HTTP 请求,这些请求将根据该 JVM 中的实际对象进行解析(该对象具有访问权限)到实现类)。

如果这种通信是通过序列化对象并通过线路发送它们来完成的,那么它将不起作用。当应用程序 A 中的对象到达 JVM B 时,反序列化将失败(出现 ClassNotFoundException 或类似异常)。

很可能还有其他远程技术,在这种情况下,事情取决于实现。我知道类加载器可以从字节数组加载类,因此从概念上讲,这样的类加载器很有可能能够从远程源加载类。我相信,理论上网络库可以通过这种方式序列化实际的类,因此虽然 JVM B 本身并不知道实现类,但它的类加载器将根据需要提供该类的字节码。

关于java - 通过不同JVM的接口(interface)实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/443239/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com