What exactly is the point of the codebase in Java RMI?(Java RMI中的代码库到底有什么意义?)
问题描述
我目前正在学习RMI。
我不太理解代码库的概念。我读到的每篇论文都表明,调用远程对象的客户端可以从代码库加载方法定义。 现在的问题是:我不需要类路径中的描述/接口吗?如果我只在运行时知道远程对象上的方法,我如何调用这些方法呢?这甚至无法编译。
我是不是完全误解了这一点?那么代码库到底有什么意义呢?提供代码库似乎有很多额外的工作和要求
谢谢
推荐答案
假设您只向客户端提供接口,而实现将位于给定的代码库中。然后,客户端请求服务器发送给定的对象,客户端期望接收实现给定接口的对象,但客户端不知道实际的实现,当它反序列化发送的对象时,它必须转到代码库并为实际传递的对象下载相应的实现类。
这将使客户端变得非常瘦,并且您将非常容易地更新代码库中的类,而不必更新每个客户端。
编辑
假设您有一个具有以下接口的RMI服务器
public interface MiddleEarth {
public List<Creature> getAllCreatures();
}
客户端将只有MiddleEarth
和Creature
的接口,而类路径中没有任何实现。
其中Creature
的实现是Elf
、Man
、Dwarf
和Hobbit
类型的可序列化对象。并且这些实现位于您的代码库中,而不是您的客户端的类路径中。
Creature
的对象,即上面列出的任何类。
当客户端接收到序列化对象时,它必须查找类文件以对其进行反序列化,但这些文件不在本地类路径中。该流中的每个对象都带有给定的代码库,可用于查找缺少的类。因此,客户端求助于代码库来查找这些类。在那里它将找到正在使用的实际生物类。
代码库是双向工作的,因此这意味着如果您向服务器发送Creature
(即anEnt
),它也会在代码库中查找它。
这意味着当客户端和服务器都需要发布新类型的生物时,他们所要做的就是更新代码库中的creaturesImpl.jar
,而不是服务器或客户端应用程序本身。
这篇关于Java RMI中的代码库到底有什么意义?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:Java RMI中的代码库到底有什么意义?
基础教程推荐
- Java:带有char数组的println给出乱码 2022-01-01
- 设置 bean 时出现 Nullpointerexception 2022-01-01
- 无法使用修饰符“public final"访问 java.util.Ha 2022-01-01
- “未找到匹配项"使用 matcher 的 group 方法时 2022-01-01
- FirebaseListAdapter 不推送聊天应用程序的单个项目 - Firebase-Ui 3.1 2022-01-01
- 降序排序:Java Map 2022-01-01
- 减少 JVM 暂停时间 >1 秒使用 UseConcMarkSweepGC 2022-01-01
- 如何使用 Java 创建 X509 证书? 2022-01-01
- 在 Libgdx 中处理屏幕的正确方法 2022-01-01
- Java Keytool 导入证书后出错,"keytool error: java.io.FileNotFoundException &拒绝访问" 2022-01-01