Topic: re: RMI and port 1099 |
Print this page |
1.re: RMI and port 1099 | Copy to clipboard |
Posted by: sothis Posted on: 2003-01-17 15:59 本文回答 http://www.chinajavaworld.net/forum/topic.cgi?forum=33&topic=270&show=0 Java RMI缺省使用1099端口作为rmiregistry的工作端口,这样,只要程序(无论是服务器端还是客户端)是通过rmiregistry去发布或消费服务,就必须透过1099端口和外界联系(缺省)。 所以当新手们碰到 Error:java.security.AccessControlException: access denied(java.net.SockerPermission 127.0.0.1:1099 connect,resolve) 异常的时候,往往不知道到底是什回事,因为程序里面是没有表明有这样的一个端口被使用的。出现这个异常表明运行服务器或客户程序时权限配置有问题。 要知道对于RMI的C/S之间通信,就像Applet和WebServer之间通信一样,是要受Java的安全沙箱模型约束的。缺省情况下客户端和服务器端的代码没有权限存取硬盘/访问网络等等,这些权限必须在启动客户端和服务器端程序的时候加进去。 通过书写一个policy文件,我们可以指定安全策略,如 grant codebase "file:d:/jdk/test/rmi/server" { permission java.net.SocketPermission "127.0.0.1","accept,connect,listen,resolve"; }; 上面的策略表明从d:/jdk/test/rmi/server目录下面启动起来的java类可以在本机上任意操纵网络。注意windows上的程序员容易使用错误的\分隔符来代替/分隔符造成问题。 假定该文件名为RmiHelloServer.policy,那么启动客户端和服务器端程序的时候应该如下 java -Djava.security.policy=RmiHelloServer.policy RmiHelloServer |
Powered by Jute Powerful Forum® Version Jute 1.5.6 Ent Copyright © 2002-2021 Cjsdn Team. All Righits Reserved. 闽ICP备05005120号-1 客服电话 18559299278 客服信箱 714923@qq.com 客服QQ 714923 |