gpt4 book ai didi

java - 有没有一种有效的方法来测试 RMI 服务器是否已启动?

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:49:52 24 4
gpt4 key购买 nike

我有一个 RMI 客户端测试 RMI 服务器是否正在运行并且可以访问

目前我每隔几秒执行一次这个测试:

try {
rMIinstance.ping();
} catch (RemoteException e) {
getInstanceRegister().removeInstance(rMIinstance);
}

(ping() 是一个简单的虚拟 RMI 调用。)

如果实例离线,我会在大约 1 分钟后收到

java.net.ConnectException: Connection timed out

异常,显示服务器离线。

但是代码挂起一分钟,这对我们来说太长了。 (我不想更改超时设置。)有没有一种方法可以更快地执行此测试?

最佳答案

您可以通过计时器中断线程。它有点老套,会抛出 InterruptedException 而不是 RemoteException,但它应该可以工作。

try {
Timer timer = new Timer(true);
TimerTask interruptTimerTask = new InterruptTimerTask(Thread.currentThread());
timer.schedule(interruptTimerTask, howLongDoYouWantToWait);
rMIinstance.ping();
timer.cancel();
} catch (RemoteException | InterruptedException e) {
getInstanceRegister().removeInstance(rMIinstance);
}

和 TimerTask 实现:

private static class InterruptTimerTask extends TimerTask {
private Thread thread;

public InterruptTimerTask(Thread thread) {
this.thread=thread;
}

@Override
public void run() {
thread.interrupt();
}

}

关于java - 有没有一种有效的方法来测试 RMI 服务器是否已启动?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20665409/

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