posts - 22,comments - 35,trackbacks - 0

          遠程接口RmiHelloRemoteIntfc .java

          import java.rmi.*;

          public interface RmiHelloRemoteIntfc extends Remote
          {
             String helloRemoteObj(String client) throws RemoteException;
          }

          遠程接口的實現類RmiHelloRemoteObj.java

          import java.rmi.server.*;
          import java.rmi.*;

          public class RmiHelloRemoteObj extends UnicastRemoteObject implements RmiHelloRemoteIntfc
          {

            public RmiHelloRemoteObj() throws RemoteException
            {
              super();
            }

            public String helloRemoteObj(String client) throws RemoteException
            {
               return "Hello World"+client;
            }

          }

          服務器類RmiHelloServer.java

          import java.io.*;
          import java.rmi.*;
          import java.rmi.server.*;
          import sun.applet.*;
          import java.rmi.registry.LocateRegistry;

          public class RmiHelloServer
          {

            public RmiHelloServer()
            {
            }
            public static void main(String[] args)
            {
              //創建并安裝安全管理器
              if(System.getSecurityManager()==null)
              {
                 System.setSecurityManager(new RMISecurityManager());
              }

              try{
                   //創建遠程對象
                   RmiHelloRemoteObj ttt=new RmiHelloRemoteObj();
                   //啟動注冊表
                   LocateRegistry.createRegistry(2222);
                   //獎名稱綁定到對象
                   Naming.rebind("http://Fangm:2222/helloObj",ttt);

                   System.out.println("RMI服務器正在運行。。。。。。");
                }
                catch(Exception e)
                {
                   e.printStackTrace();
                }


            }
          }

          服務器端的權限文件RmiHelloServer.policy

          grant codeBase
          "file:/e:/download/rmitest/"
          {
           permission java.net.SocketPermission
                "*:1000-9999","accept,connect,listen,resolve";
          };

           

          現在就看看Client端是如何連接服務器和進行遠程方法的調用的吧


          import java.rmi.*;
          import java.rmi.server.*;

          public class RmiHelloClient
          {

            public RmiHelloClient()
            {
            }
            public static void main(String[] args)
            {
              //創建并安裝安全管理器
              if(System.getSecurityManager()==null)
              {
                 System.setSecurityManager(new RMISecurityManager());
              }

              try{
                    RmiHelloRemoteIntfc c1=(RmiHelloRemoteIntfc)Naming.lookup("rmi://Fangm:2222/helloObj");
                    System.out.println(c1.helloRemoteObj("Everyone"));
              }
              catch(Exception e)
              {
                 e.printStackTrace();
              }
              System.exit(0);

           

            }
          }

          Client端的權限文件RmiHelloClient.policy

          grant codeBase
          "file:/e:/download/rmitest/"
          {
            permission java.net.SocketPermission
                "*:1000-9999","accept,connect,listen,resolve";
          };

          好了,一個最簡單的RMI例子就安無了,對了還少了最重要的一步,那就是編譯和運行呢?我們就來了個Bat或Cmd的批處理來進行吧,

          看看RmiHello.bat吧

          javac RmiHelloRemoteIntfc.java

          javac RmiHelloRemoteObj.java

          rmic RmiHelloRemoteObj

          javac RmiHelloServer.java

          javac RmiHelloClient.java

          echo 在另一個窗口啟動服務器,請稍后。。。
          start java  -Djava.security.policy=RmiHelloServer.policy RmiHelloServer

          echo 運行客戶程序。。。
          java -Djava.security.policy=RmiHelloClient.policy RmiHelloClient

          posted on 2006-03-03 00:21 kelven 閱讀(518) 評論(0)  編輯  收藏 所屬分類: java
          主站蜘蛛池模板: 仲巴县| 平潭县| 望谟县| 观塘区| 东源县| 瑞昌市| 富源县| 莱西市| 疏附县| 射洪县| 沈阳市| 大方县| 阜宁县| 马山县| 辰溪县| 长岛县| 阿巴嘎旗| 瑞安市| 友谊县| 保德县| 剑川县| 霞浦县| 肥乡县| 荔波县| 黔西县| 梨树县| 隆安县| 垣曲县| 临沂市| 宜君县| 临沭县| 黄陵县| 延边| 武城县| 潮州市| 镇沅| 仙游县| 荣成市| 南华县| 武胜县| 绥江县|