遠程方法調用(Remote Method Invocation,RMI)可以在不同的Java虛擬機(JVM)之間實現對象與對象的通信.
使用RMI編寫客戶-服務器應用程序包括6個基本步驟:
1.定義遠程接口
2.實現遠程接口
3.編寫使用遠程對象的客戶
4.生成stub(客戶代理)以及skeletom(服務器實體)
5.啓動註冊表並且註冊對象
6.運行服務器和客戶
下面通過一個簡單的實例來介紹每一步.
1.定義遠程接口
在JBuilderX中創建一個名爲rmisample的project,然後在根目錄創建一個名爲riminterface的class,定義接口代碼如下:
public class riminterface {
interface HelloInterface extends java.rmi.Remote{
public String sayHello() throws java.rmi.RemoteException;
}
}
2.實現遠程接口
在project根目錄再創建一個名爲HelloServer的class,實現以上接口,代碼如下:
import java.rmi.*;
import java.rmi.server.*;
import java.util.Date;
public class HelloServer extends UnicastRemoteObject implements riminterface.HelloInterface{
public HelloServer() throws RemoteException{
super();
}
public String sayHello() throws java.rmi.RemoteException{
return "It`s from bluesky!" + new Date();
}
}
其中的sayHello就是實現了接口中sayHello的具體方法.
3.編寫使用遠程對象的客戶
在project根目錄再創建一個名爲HelloClient的class,編寫使用遠程對象的客戶,代碼如下:
import java.rmi.*;
public class HelloClient {
public static void main(String args[]){
if(System.getSecurityManager() == null){
System.setSecurityManager(new RMISecurityManager());
}
try{
riminterface.HelloInterface obj = (riminterface.HelloInterface)Naming.lookup("/HelloServer");
String message = obj.sayHello();
System.out.println(message);
}catch(Exception e){
System.out.println(e.toString());
}
}
}
客戶端通過Naming.lookup("/HelloServer");找到Server的遠程接口並且調用其中的方法以實現虛擬機之間的相互通信.
4.生成stub(客戶代理)以及skeletom(服務器實體)
新開一個command窗口,用rmic HelloServer語句生成stub(客戶代理)以及skeletom(服務器實體).
5.啓動註冊表並且註冊對象
打開JAVA_HOME/jre/lib/security/java.policy,將原來的授權方式改成 permission java.net.SocketPermission "*:1024-65535", "accept,connect,listen,resolve";然後保存退出.使用命令rmiregistry -J-Djava.security.policy=java.policy啓動註冊表.
然後在project根目錄再創建一個名爲RegisterIt的class,編寫註冊程序如下:
import java.rmi.*;
public class RegisterIt {
public static void main(String args[]){
try{
HelloServer obj = new HelloServer();
System.out.println("Object is" + obj);
Naming.rebind("/HelloServer",obj);
System.out.println("Already Start");
}catch(Exception e){
System.out.print(e);
}
}
}
用java RegisterIt命令註冊接口.
6.運行服務器和客戶
最後,運行客戶端程序.
好了,關於RMI就介紹到這裏,下次再見^-^!