跳转到内容

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

来自维基教科书,开放的书籍,开放的世界
(从 Jini 和网络计算:使用 Jini 导出器 重定向)

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 的强引用(如果要取消导出)以及对远程对象的强引用(如果它将在以后被其他远程客户端重用)。

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

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


Jini 和网络计算

华夏公益教科书