Xiaohua Yang 2019-05-30 10:33 采纳率: 0%
浏览 850

RMI调用的java.rmi.NoSuchObjectException: no such object exception

Server Runner:

public interface Triggerable extends Remote {…}

Runner obj = new Runner();
stub = (Triggerable) UnicastRemoteObject.exportObject(obj, 0);
registry = LocateRegistry.getRegistry(host,port);
registry.bind("Hello", stub);

Client:

Registry runnerRegistry;
private Triggerable runner;
runnerRegistry = LocateRegistry.getRegistry(ServerConfig.getRunnerIP(),ServerConfig.getRunnerPort());
runner = (Triggerable) runnerRegistry.lookup("Hello");

Server和client2个进程启动后connect 成功。

程序流程:
1. Client:
public interface Notifier extends Remote{......}
public class RunnerListener implements Notifier{
public void notify(String content) throws RemoteException {
.....do some actions here…….
UnicastRemoteObject.unexportObject(this, true);
}
…….
}

        RunnerListener nf = new RunnerListener(this);
        Notifier rnf = (Notifier) UnicastRemoteObject.exportObject(nf, 0);
        String content ="Test";
        runner.create(content, rnf);

2. Server:调用client 的notify();
        …
        rnf.notify(content);

问题:client 会根据需要多次生成Notifier 并且调用 Server function with Notifier object. Server 做完相应的操作后,会回调 client 的 函数
rnf.notify(content)。 刚开始1,2天工作正常,但往后时不时的就会出现调用异常。

java.rmi.NoSuchObjectException: no such object in table

at sun.rmi.transport.StreamRemoteCall.exceptionReceivedFromServer(StreamRemoteCall.java:283)

at sun.rmi.transport.StreamRemoteCall.executeCall(StreamRemoteCall.java:260)

at sun.rmi.server.UnicastRef.invoke(UnicastRef.java:161)

at java.rmi.server.RemoteObjectInvocationHandler.invokeRemoteMethod(RemoteObjectInvocationHandler.java:227)

at java.rmi.server.RemoteObjectInvocationHandler.invoke(RemoteObjectInvocationHandler.java:179)

at com.sun.proxy.$Proxy1.notify(Unknown Source)

问题是:server端调用client 的notify(), 有的对象可以调用成功,有的对象调用失败。如果说registry 对象被回收,后续的所有调用都应该失败。那就有可能是client export的notifier对象被回收,那该如何处理?

另外,这段代码在java1.7 上一直运行良好,改到 1.8.0_65后,就出现了这个问题。
有哪位大侠遇到过此类问题?有请多指教。

  • 写回答

1条回答

  • threenewbee 2019-05-30 10:42
    关注

    要么是配置问题,要么是外部组件兼容性问题
    https://blog.csdn.net/pengchang_1981/article/details/8069124?utm_source=blogxgwz3

    评论

报告相同问题?

悬赏问题

  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 shape_predictor_68_face_landmarks.dat
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 对于相关问题的求解与代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料