RMI學習筆記(二)-----RMI遠程調用實例(一)

 

1.         RMI最簡單的一個實例,思路是你在服務器端創建一個方法addData(),該方法實現兩個整數的相加,然從客戶端遠程調用這個方法實現相加功能

 

2.    我們一步一步來實現,首先定義遠程接口-----遠程接口類

import java.rmi.*;

import java.rmi.server.*;

 

public interface AddServer extends Remote

{

       public int addData(int a,int b)throws RemoteException;

}

 

2.         定義和實現服務器中遠程方法-----服務器類

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

              {

                     //創建該遠程對象

                     AddServerImpl instance=new AddServerImpl();

                     //註冊該遠程對象

Naming.rebind("add",instance);

                     System.out.println("Server Registered");

              }

              catch(Exception e){System.out.println(e);}

       }

}

 

3.         定義與實現客戶-----客戶類

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.         生成StubSkeleton

在命令提示符下:rmic  AddServerImpl

這時你會發現在文件夾中多了兩個文件AddServerImpl_Skel.classAddServerImpl_Stub.class

 

6.         創建安全策略

在命令提示符下:policytool

點擊Add Policy Entry按鈕

點擊Add Permission按鈕

Permission列表框中選取:AllPermission

點擊ok

點擊Done按鈕

File菜單總選擇Save as,打入文件名.java.policy,接着保存在你那個登錄用戶名的文件夾下面

7.         啓動RMI遠程註冊表

在命令提示符下:start  rmiregistry

 

8.         啓動服務器

在命令提示符下:java  AddServerImpl

 

 

9.         啓動客戶

在命令提示符下:java  AddClient

 

10.   如果你是在自己機器上調試的話,那麼到第九步就可以了,如果你在兩臺機器上調試的話,需要改一下AddClient代碼中的IP地址,並且把AddClient.classAddServer.classAddServerImpl_Stub.class放到你打算作爲客戶端的那臺機器上去,注意其它文件不要放,否則你就等於把服務端代碼都告訴別人了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章