跳转到内容

Jini 和网络计算/使用 Jini 导出器

来自 Wikibooks,开放世界中的开放书籍

net.jini.export 包在 Jini 2.0 及更高版本中提供了强大的功能。该包的基础是 net.jini.export.Exporter 接口。该接口的实例提供了导出和取消导出用于远程访问的单个对象的能力。

方法签名Javadoc 摘要
public java.rmi.Remote export( java.rmi.Remote impl ); 导出指定远程对象并返回一个代理,该代理可用于调用已导出远程对象上的远程方法。
public boolean unexport(boolean force);
Unexports the remote object that was exported by this Exporter
such that it will no longer receive remote method invocations 
that were made possible as a result of exporting it with this Exporter.

通常,将使用在服务启动时建立的 net.jini.config.Configuration 实现来获取 Exporter 的实例。关于 使用配置文件 的部分提供了更多关于如何通常获取 Configuration 实例的信息。

使用 Exporter 有很多种情况。具体情况在很大程度上决定了单个已导出对象是否可以被所有外部引用使用,或者是否需要对同一个对象进行多次导出。如上所述,每次导出都需要一个单独的 Exporter,并且对于任何已导出的 Remote 对象,都需要维护对 Exporter 的强引用(如果要进行取消导出)以及对 Remote 对象的强引用(如果稍后要被其他远程客户端重用)。

分布式垃圾收集 (DGC) 使您可以将远程引用导出到本地对象,将引用发送回远程客户端,然后在远程客户端完成使用远程对象后,或由于网络分区或其他故障使其无法更新租约而无法维护对该对象的引用时,取消导出并回收远程对象。

某些类型的应用程序会为所有客户端使用单个 Remote 对象。其他类型的应用程序实际上会为每个远程客户端导出一个用于远程使用的单个对象引用。在前一种情况下,不需要 DGC,并且可能会出现问题,因为 DGC 会尝试管理租约。在后一种情况下,需要 DGC 或其他类型的基于租约的生命周期管理。


Jini 和网络计算

华夏公益教科书