gpt4 book ai didi

java - 在 UnicastRemoteObject 类的方法 'exportObject' 中使用固定端口号时出现 NoSuchObjectException

转载 作者:太空宇宙 更新时间:2023-11-04 12:51:49 24 4
gpt4 key购买 nike

这是我的应用程序在更改之前的代码:

Static Map <String,MKRSingleton> servStubs = Collections.synchronizedMap(new HashMap<String,MKRSingleton>);
public synchronized Object test(String type) throws Exception
{

MKRSingleton = (MKRSingleton) UnicastRemoteObject.exportObject(MKRSingletonRemote,0);
servStubs.put(type,MKRSingleton);

}

当我们将此代码移动到云实例上时,我们遇到了问题。问题似乎是由于传递的端口号为零,因此 RMI 运行时选择匿名远程对象接收调用的端口,但是,它与云不兼容(仅用于传入请求的静态端口号),因此无法工作。我更改了代码以传递静态端口:

public synchronized Object test(String type) throws Exception
{

MKRSingleton = (MKRSingleton) UnicastRemoteObject.exportObject(MKRSingletonRemote,portNo); // portNo um getting from a property file with value like 40000
servStubs.put(type,MKRSingleton);

}

它现在可以在云实例上工作,但是,仅在特定的 unix 盒子上(非云)嗯得到以下错误(它正在一些 unix 盒子上工作):

java.rmi.NoSuchObjectException: no such object in table
at sun.rmi.transport.StreamRemoteCall.exceptionReceivedFromServer(StreamRemoteCall.java:255)
at sun.rmi.transport.StreamRemoteCall.executeCall(StreamRemoteCall.java:233)
at sun.rmi.server.UnicastRef.invoke(UnicastRef.java:142)
at java.rmi.server.RemoteObjectInvocationHandler.invokeRemoteMethod(RemoteObjectInvocationHandler.java:178)
at java.rmi.server.RemoteObjectInvocationHandler.invoke(RemoteObjectInvocationHandler.java:132)

不保留强引用在这里应该不是问题,因为它在我更改之前工作正常,因此需要您的帮助来找出错误的原因是什么?

最佳答案

Not keeping a strong reference should not be an issue here as it was working fine before my change, so need your help to figure out what could the reason of the error ?

不保留强引用是这里唯一的问题。远程对象已被 DGC 并在本地进行垃圾收集。这就是异常的含义。

差异是由于互联网上的 DGC 租约续订失败造成的。这就是为什么您应该保留对远程对象的强引用,或者,如果您从 JVM 导出注册表,则应保留对注册表的强引用:在这两种情况下,都在静态变量中。注册表将使绑定(bind)到它的任何对象保持 Activity 状态。

关于java - 在 UnicastRemoteObject 类的方法 'exportObject' 中使用固定端口号时出现 NoSuchObjectException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35750458/

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