一个最简单的RMI调用的例子,为什么出错,郁闷

ladofwind ladofwind 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区



远程接口:
package test;
import java.rmi.*;

public interface HelloIn extends java.rmi.Remote{
String sayHello() throws RemoteException;
}
远程对象:
package test;

import java.rmi.*;
//import java.net.*;
import java.rmi.registry.*;
import java.rmi.server.*;

public class Hello extends java.rmi.server.UnicastRemoteObject implements HelloIn{
public Hello() throws RemoteException{
super();
}
public String sayHello() throws RemoteException{
return "Hello,World!";
}
public static void main(String[] args){
System.setSecurityManager(new java.rmi.RMISecurityManager());
try{

Hello h=new Hello();
java.rmi.Naming.bind("Hello",h);
System.out.print("Ready......");
}
catch(Exception e){
e.printStackTrace();
}

}
}
之后生成skeleton,stub都很正常

调用的程序:
package test;

import java.rmi.*;
import java.rmi.registry.*;

public class Helloworld{
public static void main(String[] args){
System.setSecurityManager(new java.rmi.RMISecurityManager());
try{
HelloIn hi=(HelloIn)Naming.lookup("hello");
for(int i=0;i<10;i++){
System.out.println(hi.sayHello());
}
}
catch(Exception e){
e.printStackTrace();
}
}
}



编译成功后,我在控制台 start rmiregistry 后,
启动服务程序,java test.Hello,出错,下面是
错误输出,大家帮忙看看,有没有遇到过的?


java.security.AccessControlException: access denied (java.net.SocketPermission 1
27.0.0.1:1099 connect,resolve)
at java.security.AccessControlContext.checkPermission(AccessControlConte
xt.java:269)
at java.security.AccessController.checkPermission(AccessController.java:
401)
at java.lang.SecurityManager.checkPermission(SecurityManager.java:524)
at java.lang.SecurityManager.checkConnect(SecurityManager.java:1026)
at java.net.Socket.connect(Socket.java:446)
at java.net.Socket.connect(Socket.java:402)
at java.net.Socket.<init>(Socket.java:309)
at java.net.Socket.<init>(Socket.java:124)
at sun.rmi.transport.proxy.RMIDirectSocketFactory.createSocket(RMIDirect
SocketFactory.java:22)
at sun.rmi.transport.proxy.RMIMasterSocketFactory.createSocket(RMIMaster
SocketFactory.java:128)
at sun.rmi.transport.tcp.TCPEndpoint.newSocket(TCPEndpoint.java:562)
at sun.rmi.transport.tcp.TCPChannel.createConnection(TCPChannel.java:185
)
at sun.rmi.transport.tcp.TCPChannel.newConnection(TCPChannel.java:171)
at sun.rmi.server.UnicastRef.newCall(UnicastRef.java:313)
at sun.rmi.registry.RegistryImpl_Stub.bind(Unknown Source)
at java.rmi.Naming.bind(Naming.java:111)
at test.Hello.main(Hello.java:20)
...全文
评论 17
收藏 已收藏
分享
返回顶部
ladofwind
Java EE 67,535 成员 225,843 内容