Java开发网 Java开发网
注册 | 登录 | 帮助 | 搜索 | 排行榜 | 发帖统计  

您没有登录

» Java开发网 » Java EE 综合讨论区  

按打印兼容模式打印这个话题 打印话题    把这个话题寄给朋友 寄给朋友    该主题的所有更新都将Email到你的邮箱 订阅主题
flat modethreaded modego to previous topicgo to next topicgo to back
作者 re: RMI and port 1099
sothis



CJSDN高级会员


发贴: 168
积分: 60
于 2003-01-17 15:59 user profilesend a private message to usersend email to sothissearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
本文回答
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


sothis edited on 2003-02-21 17:57

天狼星

话题树型展开
人气 标题 作者 字数 发贴时间
8883 re: RMI and port 1099 sothis 888 2003-01-17 15:59

flat modethreaded modego to previous topicgo to next topicgo to back
  已读帖子
  新的帖子
  被删除的帖子
Jump to the top of page

   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