//: c15:rmi:PerfectTime.java // From 'Thinking in Java, 2nd ed.' by BrUCe Eckel // www.BruceEckel.com. See copyright notice in CopyRight.txt. // The implementation of // the PerfectTime remote object. import java.rmi.*; import java.rmi.server.*; import java.rmi.registry.*; import java.net.*;
public class PerfectTime extends UnicastRemoteObject implements PerfectTimeI { // Implementation of the interface: public long getPerfectTime() throws RemoteException { return System.currentTimeMillis(); } // Must implement constructor // to throw RemoteException: public PerfectTime() throws RemoteException { // super(); // Called automatically } // Registration for RMI serving. Throw // exceptions out to the console. public static void main(String[] args) throws Exception { PerfectTime pt = new PerfectTime(); Naming.rebind("/PerfectTime", pt); System.out.PRintln("Ready to do time"); } } ///:~ //: c15:rmi:PerfectTimeI.java // From 'Thinking in Java, 2nd ed.' by Bruce Eckel // www.BruceEckel.com. See copyright notice in CopyRight.txt. // The PerfectTime remote interface. import java.rmi.*;
interface PerfectTimeI extends Remote { long getPerfectTime() throws RemoteException; } ///:~ //: c15:rmi:DisplayPerfectTime.java // From 'Thinking in Java, 2nd ed.' by Bruce Eckel // www.BruceEckel.com. See copyright notice in CopyRight.txt. // Uses remote object PerfectTime. import java.rmi.*; import java.rmi.registry.*;
public class DisplayPerfectTime { public static void main(String[] args) throws Exception { System.setSecurityManager( new RMISecurityManager()); PerfectTimeI t = (PerfectTimeI)Naming.lookup("/PerfectTime"); for(int i = 0; i < 10; i++) System.out.println("Perfect time = " + t.getPerfectTime()); } } ///:~ grant { // Allow everything for now permission java.security.AllPermission; };
存入于F:/rmi下 操作步骤 F:/rmi>java PerfectTime Ready to do time F:/rmi>javac *.java F:/rmi>rmic PerfectTime F:/rmi>start rmiregistry F:/rmi>java PerfectTime Ready to do time 另开一DOS窗口 F:/rmi>java -Djava.security.policy=registerit.policy DisplayPerfectTime Perfect time = 1011585443953 Perfect time = 1011585443968 Perfect time = 1011585444000 Perfect time = 1011585444000 Perfect time = 1011585444015 Perfect time = 1011585444031 Perfect time = 1011585444031 Perfect time = 1011585444046 Perfect time = 1011585444062 Perfect time = 1011585444062 注重:假如在rmic PerfectTime时报找不到PerfectTime类,请在环境变量中的ClassPath中加入:F:/rmi