銀色幻想

          常用鏈接

          統計

          積分與排名

          學習交流

          最新評論

          rmi的實現

          RMI,遠程方法調用(Remote Method Invocation)是Enterprise JavaBeans的支柱,是建立分布式Java應用程序的方便途徑。RMI是非常容易使用的,但是它非常的強大。
            RMI的基礎是接口,RMI構架基于一個重要的原理:定義接口和定義接口的具體實現是分開的。下面我們通過具體的例子,建立一個簡單的遠程計算服務和使用它的客戶程序

            一個正常工作的RMI系統由下面幾個部分組成:
          • 遠程服務的接口定義
          • 遠程服務接口的具體實現
          • 樁(Stub)和框架(Skeleton)文件
          • 一個運行遠程服務的服務器
          • 一個RMI命名服務,它允許客戶端去發現這個遠程服務
          • 類文件的提供者(一個HTTP或者FTP服務器)
          • 一個需要這個遠程服務的客戶端程序

          相關代碼如下:
          接口類
          public interface RMI_Add extends java.rmi.Remote {
          ?public long add(long a, long b, long c) throws java.rmi.RemoteException;
          }


          實現類
          import java.rmi.Naming;

          public class RMI_AddImpl extends java.rmi.server.UnicastRemoteObject implements RMI_Add {
          ?public RMI_AddImpl() throws java.rmi.RemoteException {
          ??super();
          ?}

          ?public long add(long a, long b, long c) throws java.rmi.RemoteException {
          ??return a + b + c;
          ?}

          ?public static void main(String[] args) {
          ??try {
          ???RMI_Add d = new RMI_AddImpl();
          ???Naming.rebind("rmi://127.0.0.1:1099/RMI_AddService", d);
          ??} catch (Exception e) {
          ???e.printStackTrace();
          ??}
          ?}

          }

          客戶端
          import java.net.MalformedURLException;
          import java.rmi.Naming;
          import java.rmi.NotBoundException;
          import java.rmi.RMISecurityManager;
          import java.rmi.RemoteException;

          public class Client {
          ?public static void main(String[] args) {
          ??System.setSecurityManager(new RMISecurityManager());

          ??try {
          ???RMI_Add t = (RMI_Add) Naming.lookup("rmi://127.0.0.1:1099/RMI_AddService");
          ???for (int i = 0; i < 10; i++)
          ????System.out.println("Perfect time =" + t.add(1, 2, 3));
          ??} catch (MalformedURLException e) {
          ???e.printStackTrace();
          ??} catch (RemoteException e) {
          ???e.printStackTrace();
          ??} catch (NotBoundException e) {
          ???e.printStackTrace();
          ??}
          ?}

          }


          一條最簡單的安全策略,它允許任何人做任何事,對于你的更加關鍵性的應用,你必須指定更加詳細安全策略。
          grant {
          ? permission java.security.AllPermission "", "";
          };

          相關命令
          rmic -classpath . -d . RMI_AddImpl
          start rmiregistry 1099
          java -Djava.rmi.server.codebase=file:///E:/workspace/rmi/ RMI_AddImpl
          java -Djava.security.policy=policy.txt Client

          posted on 2006-11-04 10:26 銀色幻想 閱讀(286) 評論(0)  編輯  收藏


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


          網站導航:
           
          主站蜘蛛池模板: 南溪县| 微博| 丁青县| 姜堰市| 健康| 韩城市| 巴彦淖尔市| 西畴县| 正蓝旗| 樟树市| 丰都县| 安西县| 丹寨县| 米林县| 德保县| 日照市| 天台县| 蕲春县| 汝州市| 高淳县| 集安市| 西和县| 罗甸县| 全椒县| 屏南县| 阿图什市| 平南县| 侯马市| 开江县| 固镇县| 曲水县| 通河县| 阳江市| 彭水| 台前县| 毕节市| 库尔勒市| 阳城县| 苏尼特左旗| 新晃| 崇礼县|