当前位置: 技术问答>java相关
请教:rmi中的server为什么不能注册?
来源: 互联网 发布时间:2015-06-13
本文导语: 刚做一rmi的server,在start rmiregistry后,有一新的DOS窗口, 然后执行远端对象, java -Djava.server.codebase=file:/e:javaAlphaReverse.class -Djava.rmi.server.duan=localhost Alpha.Reverse 但server就是注册不进去: (显示下列信息)我的机器...
刚做一rmi的server,在start rmiregistry后,有一新的DOS窗口,
然后执行远端对象,
java -Djava.server.codebase=file:/e:javaAlphaReverse.class -Djava.rmi.server.duan=localhost Alpha.Reverse
但server就是注册不进去: (显示下列信息)我的机器名是duan
Error while binding Reverse object
java.security.AccessControlException: access denied (java.net.SocketPermission duan resolve)
然后执行远端对象,
java -Djava.server.codebase=file:/e:javaAlphaReverse.class -Djava.rmi.server.duan=localhost Alpha.Reverse
但server就是注册不进去: (显示下列信息)我的机器名是duan
Error while binding Reverse object
java.security.AccessControlException: access denied (java.net.SocketPermission duan resolve)
|
去掉那句setSecurityManagement();(好像是这么写的)再试试
|
这好像是你的服务没法bind,一般server正确的写法是:
rmi_Interface c = new rmi_Impl();
Naming.rebind("rmi://127.0.0.1:1099/rmi_service", c);
这样在client端就可以这样调用:
rmi_Interface c = (rmi_Interface) Naming.lookup("rmi://127.0.0.1:1099/rmi_service");
再调用rmi_Interface的方法。
建议你把代码关键的几步贴出来,这样才好帮你。
rmi_Interface c = new rmi_Impl();
Naming.rebind("rmi://127.0.0.1:1099/rmi_service", c);
这样在client端就可以这样调用:
rmi_Interface c = (rmi_Interface) Naming.lookup("rmi://127.0.0.1:1099/rmi_service");
再调用rmi_Interface的方法。
建议你把代码关键的几步贴出来,这样才好帮你。
|
这只是一个下策而已,当然你可以去查看一下java的安全部分,应该有所收获:)