1. RMI最簡單的一個實例,思路是你在服務(wù)器端創(chuàng)建一個方法addData(),該方法實現(xiàn)兩個整數(shù)的相加,然從客戶端遠程調(diào)用這個方法實現(xiàn)相加功能
2. 我們一步一步來實現(xiàn),首先定義遠程接口-----遠程接口類
import java.rmi.*;
import java.rmi.server.*;
public interface AddServer extends Remote
{
public int addData(int a,int b)throws RemoteException;
}
2. 定義和實現(xiàn)服務(wù)器中遠程方法-----服務(wù)器類
import java.rmi.*;
import java.rmi.server.*;
//注意要擴展UnicastRemoteObject類
public class AddServerImpl extends UnicastRemoteObject implements AddServer
{
public AddServerImpl()throws RemoteException
{
super();
}
public int addData(int a,int b)throws RemoteException
{
return a b;
}
public static void main(String s[])
{
try
{
//創(chuàng)建該遠程對象
AddServerImpl instance=new AddServerImpl();
//注冊該遠程對象
Naming.rebind("add",instance);
System.out.println("Server Registered");
}
catch(Exception e){System.out.println(e);}
}
}
3. 定義與實現(xiàn)客戶-----客戶類
import java.io.*;
import java.rmi.*;
public class AddClient
{
public AddClient()
{
try
{
BufferedReader input=new BufferedReader(new InputStreamReader(System.in));
System.out.println("Please enter first number:");
System.out.flush();
String s=input.readLine();
int num1=Integer.parseInt(s);
System.out.println("Please enter second number:");
System.out.flush();
s=input.readLine();
int num2=Integer.parseInt(s);
AddServer addserver=(AddServer)Naming.lookup("rmi://127.0.0.1/add");
int i=addserver.addData(num1,num2);
System.out.print("Result is:" i);
}
catch(Exception e){System.out.println(e);}
}
public static void main(String s[])
{
new AddClient();
}
}
4. 編譯javac *.java
5. 生成Stub和Skeleton
在命令提示符下:rmic AddServerImpl
這時你會發(fā)現(xiàn)在文件夾中多了兩個文件AddServerImpl_Skel.class和AddServerImpl_Stub.class
6. 創(chuàng)建安全策略
在命令提示符下:policytool
點擊Add Policy Entry按鈕
點擊Add Permission按鈕
在Permission列表框中選?。篈llPermission
點擊ok
點擊Done按鈕
從File菜單總選擇Save as,打入文件名.java.policy,接著保存在你那個登錄用戶名的文件夾下面
7. 啟動RMI遠程注冊表
在命令提示符下:start rmiregistry
8. 啟動服務(wù)器
在命令提示符下:java AddServerImpl
9. 啟動客戶
在命令提示符下:java AddClient
10. 如果你是在自己機器上調(diào)試的話,那么到第九步就可以了,如果你在兩臺機器上調(diào)試的話,需要改一下AddClient代碼中的IP地址
,并且把AddClient.class,AddServer.class和AddServerImpl_Stub.class放到你打算作為客戶端的那臺機器上去
,注意其它文件不要放,否則你就等于把服務(wù)端代碼都告訴別人了。