Feng.Li's Java See

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

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

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

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

          以下為代碼示例
          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)類(lèi),在此我把服務(wù)器的綁定一起在此類(lèi)中實(shí)現(xiàn),也可另外再寫(xiě)一個(gè)類(lèi),實(shí)現(xiàn)RMI綁定。(注意:一般都用Naming.rebind(),因?yàn)閞ebind()可以覆蓋原有的服務(wù)名,省去不必要的麻煩。1099端口為默認(rèn),也可以不寫(xiě))
          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)類(lèi),在此是RMI_AddImpl?。
          6:rmigistry:運(yùn)行RMI注冊(cè)程序.
          7:? 運(yùn)行客戶(hù)端代碼。

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

          主站蜘蛛池模板: 亳州市| 镶黄旗| 晋中市| 两当县| 双辽市| 朝阳县| 文水县| 五台县| 峨山| 鹤庆县| 蓝山县| 云霄县| 沙雅县| 东方市| 龙游县| 玉屏| 安远县| 司法| 常州市| 屏山县| 河津市| 淮阳县| 兴业县| 广河县| 桓仁| 青铜峡市| 高安市| 平舆县| 盐津县| 汉中市| 鄯善县| 金溪县| 巴塘县| 林周县| 永济市| 高要市| 洛阳市| 东乌| 宁南县| 钟祥市| 富民县|