gpt4 book ai didi

java - RMI:RMI Reaper 线程、UnicastRemoteObject 和Registry

转载 作者:行者123 更新时间:2023-12-02 03:27:53 24 4
gpt4 key购买 nike

我的 RMI Reaper 线程有问题,它不允许我的所有程序终止,因为该线程不是守护进程。我发现信息表明该线程仅在所有对象均未导出时停止。所以我有以下代码来创建 rmi serer。

registry = LocateRegistry.createRegistry(2525);
Server stub = (Server) UnicastRemoteObject.exportObject(defaultServer, 2525);
registry.rebind("//localhost/server", stub);

我有两个版本的“未导出”。
版本1:

UnicastRemoteObject.unexportObject(defaultServer, true);

版本 2:

UnicastRemoteObject.unexportObject(registry, true);

当我使用版本 2 时 - RMI Reaper 线程不会终止,并且所有程序都不会终止。当我使用版本 1 时一切正常。然而,在很多地方我发现了以下代码:

UnicastRemoteObject.unexportObject(rmiRegistry, true); // Stop the RMI registry

谁能解释为什么以及如何将Registry与UnicastRemoteObject链接起来。

最佳答案

registry = LocateRegistry.createRegistry(2525);

导出注册表。

Server stub = (Server) UnicastRemoteObject.exportObject(defaultServer, 2525);

导出您的远程对象defaultServer

因此,取消导出时,您必须使用您提到的两行:

UnicastRemoteObject.unexportObject(defaultServer, true);

取消导出您自己的远程对象,并且

UnicastRemoteObject.unexportObject(registry, true);

取消导出您启动的注册表。

how Registry is linked with UnicastRemoteObject.

您将远程对象绑定(bind)到注册表中。出于 DGC 目的,使注册表成为远程对象的客户端,从而使其保持 Activity 状态。

关于java - RMI:RMI Reaper 线程、UnicastRemoteObject 和Registry,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38549399/

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