gpt4 book ai didi

Java RMI InitialContext : Equivalent of LocateRegistry. createRegistry(int)?

转载 作者:太空宇宙 更新时间:2023-11-04 08:55:21 26 4
gpt4 key购买 nike

我正在尝试一些非常基本的 RMI:

//   Context namingContext = new InitialContext();
Registry reg = LocateRegistry.createRegistry(9999);
for ( int i = 0; i < objs.length; i++ ) {
int id = objs[i].getID();
// namingContext.bind( "rmi:CustomObj" + id , objs[i] );
reg.bind( "CustomObj" + id , objs[i] );
}

这可以顺利完成,但为了将来的目的,我需要使用 InitialContext

         Context namingContext = new InitialContext();
for ( int i = 0; i < objs.length; i++ ) {
int id = objs[i].getID();
namingContext.bind( "rmi:CustomObj" + id , objs[i] );
}

但我无法让它发挥作用。我已经从命令行启动了rmiregistry。是否有等价的 LocateRegistry.createRegistry(int) ?或者通过其他方式从我的类中启动 InitialContext 使用的 RMI 注册表/注册表? (而不是命令行)

<小时/>

堆栈跟踪:

javax.naming.CommunicationException [Root exception is java.rmi.ServerException: RemoteException occurred in server thread; nested exception is: 
java.rmi.UnmarshalException: error unmarshalling arguments; nested exception is:
java.lang.ClassNotFoundException: bguiz.scratch.network.eg.Student]
at com.sun.jndi.rmi.registry.RegistryContext.bind(RegistryContext.java:126)
at com.sun.jndi.toolkit.url.GenericURLContext.bind(GenericURLContext.java:208)
at javax.naming.InitialContext.bind(InitialContext.java:400)
at bguiz.scratch.RMITest.main(RMITest.java:29)
Caused by: java.rmi.ServerException: RemoteException occurred in server thread; nested exception is:
java.rmi.UnmarshalException: error unmarshalling arguments; nested exception is:
java.lang.ClassNotFoundException: bguiz.scratch.CustomObj
at sun.rmi.server.UnicastServerRef.oldDispatch(UnicastServerRef.java:396)
at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:250)
....(truncated)
<小时/>

编辑:我将在几天内删除我自己的问题,因为似乎没有答案(我自己无法弄清楚)。任何咬人者的最后呼吁!

最佳答案

经过一番修改,问题终于解决了。仅供引用,这就是它的内容:

由于 RMI 注册表有自己的类路径,因此引发了 ClassNotFoundException。包含 InitialContext 的类在其类路径上具有自定义对象并不重要 - 必须初始化 RMI 注册表,以便自定义对象也位于其类路径上。

为此,请在启动 rmiregistry 之前在命令行上设置 classpath 环境值。如果此类路径包含自定义对象的类,则不会引发 ClassNotFoundException,并且随后会避免 ServerException 和 `CommunicationException'。

关于Java RMI InitialContext : Equivalent of LocateRegistry. createRegistry(int)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2415802/

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