注:本文所涉及代碼轉自thinking in java ,但有改動四個文件: //: 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