刚接触RMI不久,按TJK上面的例子来的,不明白怎么错,汗
远程接口:PerfectTimer.java
package TJK.rmi;
import java.rmi.*;
interface PerfectTimer extends Remote
{
long getPerfectTime()throws RemoteException;
}
服务端实现远程对象:PerfectTime.java
package TJK.rmi;
import java.rmi.*;
import java.rmi.server.*;
import java.rmi.registry.*;
import java.net.*;
public class PerfectTime extends UnicastRemoteObject
implements PerfectTimer
{
public long getPerfectTime()throws RemoteException
{
return System.currentTimeMillis();
}
public PerfectTime()throws RemoteException{
}
public static void main(String args[])
throws Exception
{
System.setSecurityManager(new RMISecurityManager());
PerfectTime pt=new PerfectTime();
Naming.bind("PerfectTime",pt);
System.out.println("ready to do time");
}
}
客户端:DisplayPerfectTime.java
package TJK.rmi;
import java.rmi.*;
import java.rmi.registry.*;
public class DisplayPerfectTime
{
public static void main(String []args)
throws Exception
{
System.setSecurityManager(new RMISecurityManager());
PerfectTimer t=(PerfectTimer)Naming.lookup("rmi://localhost/PerfectTime");
for(int i=0;i<10;i++)
System.out.println("Perfect time="+t.getPerfectTime());
}
}
全部程序编译后,然后注册,
start rmiregistry
rmic TJK.rmi.PerfectTime
但是一运行服务端就出现异常
java.security.AccessControlException: access denied (java.net.SocketPermission 127.0.0.1:1099 connect,resolve)
at java.security.AccessControlContext.checkPermission(AccessControlContext.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(RMIDirectSocketFactory.java:22)
at sun.rmi.transport.proxy.RMIMasterSocketFactory.createSocket(RMIMasterSocketFactory.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.lookup(Unknown Source)
at java.rmi.Naming.lookup(Naming.java:84)
at TJK.rmi.DisplayPerfectTime.main(DisplayPerfectTime.java:10)
Exception in thread "main"
应该是访问失败吧,该怎么改才行??谢谢
――――学生