为什么在我执行java -Djava.security.policy=mypolicy.policy myrmidbserver时出现错误提示是:java.security.AccessControlException: access denied (java.net.SocketPermission 127.0.0.1:2222 connect,resolve) at java.security.AccessControlContext.checkPermission(AccessControlConte xt.java:273) at java.security.AccessController.checkPermission(AccessController.java: 404) at java.lang.SecurityManager.checkPermission(SecurityManager.java:545) at java.lang.SecurityManager.checkConnect(SecurityManager.java:1047) at java.net.Socket.connect(Socket.java:424) at java.net.Socket.connect(Socket.java:379) at java.net.Socket.<init>(Socket.java:293) at java.net.Socket.<init>(Socket.java:121) at sun.rmi.transport.proxy.RMIDirectSocketFactory.createSocket(RMIDirect SocketFactory.java:25) at sun.rmi.transport.proxy.RMIMasterSocketFactory.createSocket(RMIMaster SocketFactory.java:125) at sun.rmi.transport.tcp.TCPEndpoint.newSocket(TCPEndpoint.java:565) at sun.rmi.transport.tcp.TCPChannel.createConnection(TCPChannel.java:188 ) at sun.rmi.transport.tcp.TCPChannel.newConnection(TCPChannel.java:174) at sun.rmi.server.UnicastRef.newCall(UnicastRef.java:316) at sun.rmi.registry.RegistryImpl_Stub.rebind(Unknown Source) at java.rmi.Naming.rebind(Naming.java:162) at RmiHelloServer.main(RmiHelloServer.java:28) 到底是哪里的问题呢,调程序真是一件苦恼的事~~~
应该还有一个clientImly用来实现接口。
yourApplication.interface -- 把所有合约类放到这里。
yourApplication.server --把所有服务器类放到这里。然后简单的把yourApplication.client和yourApplication.interface封装到客户中,
把yourApplication.server和yourApplication.interface封装到服务器中。
这样会比较好管理些。:)
服务端还要执行服务程序myrmidbserver的
grant {
permission java.security.AllPermission "", "";
};
这就是一个policy文件,如果程序中没有使用System.setSecurityManager函数,可以不配置policy文件.
rmiregistry
2.
java -Djava.security.policy=mypolicy.policy myrmidbserver
3.
java -Djava.security.policy=mypolicy.policy myrmidbclient
at java.security.AccessControlContext.checkPermission(AccessControlConte
xt.java:273)
at java.security.AccessController.checkPermission(AccessController.java:
404)
at java.lang.SecurityManager.checkPermission(SecurityManager.java:545)
at java.lang.SecurityManager.checkConnect(SecurityManager.java:1047)
at java.net.Socket.connect(Socket.java:424)
at java.net.Socket.connect(Socket.java:379)
at java.net.Socket.<init>(Socket.java:293)
at java.net.Socket.<init>(Socket.java:121)
at sun.rmi.transport.proxy.RMIDirectSocketFactory.createSocket(RMIDirect
SocketFactory.java:25)
at sun.rmi.transport.proxy.RMIMasterSocketFactory.createSocket(RMIMaster
SocketFactory.java:125)
at sun.rmi.transport.tcp.TCPEndpoint.newSocket(TCPEndpoint.java:565)
at sun.rmi.transport.tcp.TCPChannel.createConnection(TCPChannel.java:188
)
at sun.rmi.transport.tcp.TCPChannel.newConnection(TCPChannel.java:174)
at sun.rmi.server.UnicastRef.newCall(UnicastRef.java:316)
at sun.rmi.registry.RegistryImpl_Stub.rebind(Unknown Source)
at java.rmi.Naming.rebind(Naming.java:162)
at RmiHelloServer.main(RmiHelloServer.java:28)
到底是哪里的问题呢,调程序真是一件苦恼的事~~~