当前位置:编程学习 > JAVA >>

在使用RMi的时候抛出internal error: ObjID already in use

在调用RMi的 LocateRegistry.createRegistry(1009);
抛出如下:
java.rmi.server.ExportException: internal error: ObjID already in use
at sun.rmi.transport.ObjectTable.putTarget(ObjectTable.java:169)
at sun.rmi.transport.Transport.exportObject(Transport.java:74)
at sun.rmi.transport.tcp.TCPTransport.exportObject(TCPTransport.java:229)
at sun.rmi.transport.tcp.TCPEndpoint.exportObject(TCPEndpoint.java:393)
at sun.rmi.transport.LiveRef.exportObject(LiveRef.java:129)
at sun.rmi.server.UnicastServerRef.exportObject(UnicastServerRef.java:190)
at sun.rmi.registry.RegistryImpl.setup(RegistryImpl.java:92)
at sun.rmi.registry.RegistryImpl.<init>(RegistryImpl.java:78)Remote Exception: java.rmi.server.ExportException: internal error: ObjID already in use

at java.rmi.registry.LocateRegistry.createRegistry(LocateRegistry.java:186)
at com.houtai.RmiSampleMain.<init>(RmiSampleMain.java:33)
at org.year.sys.SystemBuild.Start(SystemBuild.java:265)
at org.year.sys.SystemBuild.<init>(SystemBuild.java:149)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
at org.kdai.util.T.execute_class_method(T.java:71)
at org.kdai.trans.MainLoop.Start(MainLoop.java:191)
at org.kdai.trans.MainLoop.<init>(MainLoop.java:155)
at org.kj.sys.SystemBuild.StartJava(SystemBuild.java:59)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)Start==============================

at org.kdai.util.T.execute_class_method(T.java:72)
at org.kdai.trans.MainLoopJ.Start(MainLoopJ.java:156)
at org.kdai.trans.MainLoopJ.<init>(MainLoopJ.java:141)
at org.kj.app.AppIndex.main(AppIndex.java:181)


程序从main方法里启动没用问题。 
但是把整个工程启动就用问题。我的整个项目包含了其他绑定端口的功能
如: JBoss的 Netty 绑定了7001
 在网上查到RMi和DOM4j好像有冲突。(但我不知道有没有)
我项目里确实使用了DOM4J

求问题解决。。。 --------------------编程问答-------------------- 出现这种问题及有可能是/etc/hosts文件中指定的IP并不是当前服务器的真实IP,RMI在初始化时注册服务失败。
通过System.out.println(InetAddress.getLocalHost().toString());查看当前主机的IP是否为真实IP,如显示为SIMBANK/220.250.64.24,而真实IP为192.168.1.2         
解决办法:修改/etc/hosts文件中错误的IP即可,将:
220.250.64.24          SIMBANK
修改为
192.168.1.2          SIMBANK --------------------编程问答-------------------- 1楼说的我试过了。不是服务器问题.如果服务器ip有问题的话. 我直接run也会出错.但他是ok的.
LocateRegistry.createRegistry(1009);  在我项目里跑.却抛错.
跪求高手..在线等!

--------------------编程问答-------------------- 项目停止的时候报的错。
启动时RMI服务端先启动了,然后RMI客户启动去注册。
项目停止的时候,RMI服务的先停止,RMI客户端还在运行,然后就会报错,所以只报了一次错误。
补充:Java ,  Java SE
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,