tangbao

          導航

          <2025年5月>
          27282930123
          45678910
          11121314151617
          18192021222324
          25262728293031
          1234567

          統(tǒng)計

          常用鏈接

          留言簿

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          收藏夾

          url

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          最簡單的rmi

          1. RMI最簡單的一個實例,思路是你在服務器端創(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)服務器中遠程方法-----服務器類

          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. 啟動服務器

          在命令提示符下:java AddServerImpl

           

          9. 啟動客戶

          在命令提示符下:java AddClient

          10. 如果你是在自己機器上調(diào)試的話,那么到第九步就可以了,如果你在兩臺機器上調(diào)試的話,需要改一下AddClient代碼中的IP地址
          ,并且把AddClient.class,AddServer.class和AddServerImpl_Stub.class放到你打算作為客戶端的那臺機器上去
          ,注意其它文件不要放,否則你就等于把服務端代碼都告訴別人了。



          posted on 2007-05-29 15:13 糖包 閱讀(93) 評論(0)  編輯  收藏


          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導航:
           
          主站蜘蛛池模板: 离岛区| 宜黄县| 化德县| 涿州市| 西安市| 新巴尔虎右旗| 叶城县| 介休市| 望都县| 宝清县| 霍林郭勒市| 霍邱县| 福海县| 湖南省| 且末县| 桃源县| 尖扎县| 许昌县| 若羌县| 招远市| 广汉市| 交口县| 常宁市| 尼木县| 都兰县| 博湖县| 道真| 喀喇沁旗| 德化县| 兖州市| 察雅县| 甘洛县| 施甸县| 革吉县| 三亚市| 沅陵县| 永嘉县| 浦东新区| 鄱阳县| 清河县| 东乌|