Feng.Li's Java See

          抓緊時(shí)間,大步向前。
          隨筆 - 95, 文章 - 4, 評(píng)論 - 58, 引用 - 0
          數(shù)據(jù)加載中……

          RMI的小例子,不理解的來這看看吧,也歡迎大家拍我。

          ??????? 眾所周之的EJB機(jī)制是建立在Java的RMI的基礎(chǔ)之上的,要想對(duì)EJB有深入的了解,必須掌握RMI的運(yùn)行機(jī)制,在此,我說說我對(duì)RMI的一些理解,希望大家同意的和不同意的都站出來講幾句。

          ?????? Rmi是Java平臺(tái)上的RPC,但是由于其只支持Java,所以也就免去了程序員編寫IDL(接口定義語言)之苦。對(duì)于Java與非Java程序之間的通信,可以使用RMI-IIOP.
          ??????? 創(chuàng)建RMI遠(yuǎn)程對(duì)象后,程序員就可以象調(diào)用本地對(duì)象那樣去調(diào)用遠(yuǎn)程對(duì)象,其底層通信機(jī)制則完全由RMI實(shí)現(xiàn),無須我們操心了。
          ??????? 通常,實(shí)現(xiàn)一個(gè)RMI系統(tǒng)有4個(gè)步驟:
          1:定義一個(gè)remote interface.
          2:?? 定義一個(gè)remote object implementation.
          3:? ?定義客戶端程序。
          4:編譯執(zhí)行遠(yuǎn)程對(duì)象和客戶端。

          以下為代碼示例
          1:Remote接口? (注意:必須extends Remote,方法必須throws RemoteException)
          public?interface?RMI_Add?extends?java.rmi.Remote?{
          public?long?add(long?a,?long?b,long?c)
          throws?java.rmi.RemoteException;
          }

          2:?? remote object implementation.(注意:1:extends UnicastRemoteObject 2:構(gòu)造函數(shù)內(nèi)必須調(diào)用UnicastRemoteObject的構(gòu)造函數(shù),也就是執(zhí)行super())

          3: 定義遠(yuǎn)程實(shí)現(xiàn)類,在此我把服務(wù)器的綁定一起在此類中實(shí)現(xiàn),也可另外再寫一個(gè)類,實(shí)現(xiàn)RMI綁定。(注意:一般都用Naming.rebind(),因?yàn)閞ebind()可以覆蓋原有的服務(wù)名,省去不必要的麻煩。1099端口為默認(rèn),也可以不寫)
          inport 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://10.7.3.168:1099/RMI_AddService",?d);
          }?catch?(Exception?e)?{?}
          }

          }

          4:編譯以上class文件(Javac)
          5:?? rmic編譯服務(wù)器實(shí)現(xiàn)類,在此是RMI_AddImpl?。
          6:rmigistry:運(yùn)行RMI注冊(cè)程序.
          7:? 運(yùn)行客戶端代碼。

          posted on 2006-11-04 02:21 小鋒 閱讀(2125) 評(píng)論(0)  編輯  收藏 所屬分類: J2EE

          主站蜘蛛池模板: 阿巴嘎旗| 南溪县| 武义县| 内丘县| 南安市| 晋中市| 咸阳市| 韩城市| 镇雄县| 大渡口区| 内黄县| 绍兴县| 平凉市| 新宁县| 武城县| 石林| 乐业县| 阿拉善左旗| 乌鲁木齐县| 浠水县| 遵化市| 枝江市| 于田县| 时尚| 临邑县| 揭阳市| 新邵县| 大渡口区| 辽宁省| 双城市| 淮阳县| 广水市| 六盘水市| 班戈县| 余庆县| 台前县| 浙江省| 锦州市| 旬阳县| 平远县| 土默特左旗|