锘??xml version="1.0" encoding="utf-8" standalone="yes"?>91大神xh98hx在线播放,国产精品免费一区二区三区都可以,精品无人乱码http://www.aygfsteel.com/shaolijun/category/22972.htmlzh-cnSat, 02 Jun 2007 10:45:51 GMTSat, 02 Jun 2007 10:45:51 GMT60RMI鍩虹鏁欑▼http://www.aygfsteel.com/shaolijun/archive/2007/05/22/119213.htmlCHUANDAOJUNCHUANDAOJUNTue, 22 May 2007 12:08:00 GMThttp://www.aygfsteel.com/shaolijun/archive/2007/05/22/119213.htmlhttp://www.aygfsteel.com/shaolijun/comments/119213.htmlhttp://www.aygfsteel.com/shaolijun/archive/2007/05/22/119213.html#Feedback0http://www.aygfsteel.com/shaolijun/comments/commentRss/119213.htmlhttp://www.aygfsteel.com/shaolijun/services/trackbacks/119213.html銆銆RMI鐨勫熀紜鏄帴鍙o紝RMI鏋勬灦鍩轟簬涓涓噸瑕佺殑鍘熺悊錛氬畾涔夋帴鍙e拰瀹氫箟鎺ュ彛鐨勫叿浣撳疄鐜版槸鍒嗗紑鐨勩備笅闈㈡垜浠氳繃鍏蜂綋鐨勪緥瀛愶紝寤虹珛涓涓畝鍗曠殑榪滅▼璁$畻鏈嶅姟鍜屼嬌鐢ㄥ畠鐨勫鎴風▼搴?br>涓涓甯稿伐浣滅殑RMI緋葷粺鐢變笅闈㈠嚑涓儴鍒嗙粍鎴愶細 
  • 榪滅▼鏈嶅姟鐨勬帴鍙e畾涔?
  • 榪滅▼鏈嶅姟鎺ュ彛鐨勫叿浣撳疄鐜?
  • Stub 鍜?nbsp;Skeleton 鏂囦歡
  • 涓涓繍琛岃繙紼嬫湇鍔$殑鏈嶅姟鍣?
  • 涓涓猂MI鍛藉悕鏈嶅姟錛屽畠鍏佽瀹㈡埛绔幓鍙戠幇榪欎釜榪滅▼鏈嶅姟
  • 綾繪枃浠剁殑鎻愪緵鑰咃紙涓涓狧TTP鎴栬匜TP鏈嶅姟鍣級
  • 涓涓渶瑕佽繖涓繙紼嬫湇鍔$殑瀹㈡埛绔▼搴?

  • 銆銆涓嬮潰鎴戜滑涓姝ヤ竴姝ュ緩绔嬩竴涓畝鍗曠殑RMI緋葷粺銆傞鍏堝湪浣犵殑鏈哄櫒閲屽緩绔嬩竴涓柊鐨勬枃浠跺す錛屼互渚挎斁緗垜浠垱寤虹殑鏂囦歡錛屼負浜嗙畝鍗曡搗瑙侊紝鎴戜滑鍙嬌鐢ㄤ竴涓枃浠跺す瀛樻斁瀹㈡埛绔拰鏈嶅姟绔唬鐮侊紝騫朵笖鍦ㄥ悓涓涓洰褰曚笅榪愯鏈嶅姟绔拰瀹㈡埛绔?br>銆銆濡傛灉鎵鏈夌殑RMI鏂囦歡閮藉凡緇忚璁″ソ浜嗭紝閭d箞浣犻渶瑕佷笅闈㈢殑鍑犱釜姝ラ鍘葷敓鎴愪綘鐨勭郴緇燂細
    銆銆1銆?nbsp; 緙栧啓騫朵笖緙栬瘧鎺ュ彛鐨凧ava浠g爜
    銆銆2銆?nbsp; 緙栧啓騫朵笖緙栬瘧鎺ュ彛瀹炵幇鐨凧ava浠g爜
    銆銆3銆?nbsp; 浠庢帴鍙e疄鐜扮被涓敓鎴?nbsp;Stub 鍜?nbsp;Skeleton 綾繪枃浠?br>銆銆4銆?nbsp; 緙栧啓榪滅▼鏈嶅姟鐨勪富榪愯紼嬪簭
    銆銆5銆?nbsp; 緙栧啓RMI鐨勫鎴風紼嬪簭
    銆銆6銆?nbsp; 瀹夎騫朵笖榪愯RMI緋葷粺

    鎴戠殑紼嬪簭鏄湪NetBeans IDE 5.5鍜孞DK1.6涓嬬紪鍐欑殑錛屽綋鐒惰繍琛屾槸鍦ㄥ懡浠ゆ彁紺虹涓嬭繘琛岀殑


    1銆佹帴鍙?br>絎竴姝ュ氨鏄緩绔嬪拰緙栬瘧鏈嶅姟鎺ュ彛鐨凧ava浠g爜銆傝繖涓帴鍙e畾涔変簡鎵鏈夌殑鎻愪緵榪滅▼鏈嶅姟鐨勫姛鑳斤紝鍦ㄨ繖閲屾垜浠墍鏈夊畬鎴愮殑灝辨槸鍔犲噺涔橀櫎錛屼笅闈㈡槸婧愮▼搴忥細

    1. package rmiDemo;
    2. //Calculator.java
    3. //define the interface
    4. import java.rmi.Remote;
    5. public interface Calculator extends Remote
    6. {
    7.     public long add(long a, long b) 
    8.         throws java.rmi.RemoteException
    9.     public long sub(long a, long b) 
    10.         throws java.rmi.RemoteException
    11.     public long mul(long a, long b) 
    12.         throws java.rmi.RemoteException
    13.     public long div(long a, long b) 
    14.         throws java.rmi.RemoteException

    娉ㄦ剰錛氳繖涓帴鍙g戶鎵胯嚜Remote錛屾瘡涓涓畾涔夌殑鏂規硶閮藉繀欏繪姏鍑轟竴涓猂emoteException寮傚父瀵硅薄銆?br>寤虹珛榪欎釜鏂囦歡錛屾妸瀹冨瓨鏀懼湪鍒氭墠鐨勭洰褰曚笅錛屽茍涓旂紪璇戙?br>
    2銆佹帴鍙g殑鍏蜂綋瀹炵幇

    銆銆涓嬩竴姝ワ紝鎴戜滑灝辮鍐欒繙紼嬫湇鍔$殑鍏蜂綋瀹炵幇錛岃繖鏄竴涓狢alculatorImpl綾繪枃浠訛細

    1. package rmiDemo;
    2. //CalculatorImpl.java
    3. //Implementation
    4. import java.rmi.server.UnicastRemoteObject;
    5. public class CalculatorImpl extends UnicastRemoteObject implements Calculator 
    6.     // 榪欎釜瀹炵幇蹇呴』鏈変竴涓樉寮忕殑鏋勯犲嚱鏁幫紝騫朵笖瑕佹姏鍑轟竴涓猂emoteException寮傚父 
    7.     public CalculatorImpl() 
    8.         throws java.rmi.RemoteException { 
    9.         super(); 
    10.     } 
    11.     public long add(long a, long b) 
    12.         throws java.rmi.RemoteException { 
    13.         return a + b; 
    14.     } 
    15.     public long sub(long a, long b) 
    16.         throws java.rmi.RemoteException { 
    17.         return a - b; 
    18.     } 
    19.     public long mul(long a, long b) 
    20.         throws java.rmi.RemoteException { 
    21.         return a * b; 
    22.     } 
    23.     public long div(long a, long b) 
    24.         throws java.rmi.RemoteException { 
    25.         return a / b; 
    26.     } 

    銆銆榪欎釜瀹炵幇綾諱嬌鐢ㄤ簡UnicastRemoteObject鍘昏仈鎺MI緋葷粺銆傚湪鎴戜滑鐨勪緥瀛愪腑錛屾垜浠槸鐩存帴鐨勪粠UnicastRemoteObject榪欎釜綾諱笂緇ф壙鐨勶紝浜嬪疄涓婂茍涓嶄竴瀹氳榪欐牱鍋氾紝濡傛灉涓涓被涓嶆槸浠嶶nicastRmeoteObject涓婄戶鎵匡紝閭e繀欏諱嬌鐢ㄥ畠鐨別xportObject()鏂規硶鍘昏仈鎺ュ埌RMI銆?br>銆銆濡傛灉涓涓被緇ф壙鑷猆nicastRemoteObject錛岄偅涔堝畠蹇呴』鎻愪緵涓涓瀯閫犲嚱鏁板茍涓斿0鏄庢姏鍑轟竴涓猂emoteException瀵硅薄銆傚綋榪欎釜鏋勯犲嚱鏁拌皟鐢ㄤ簡super()錛屽畠涔呮縺媧籙nicastRemoteObject涓殑浠g爜瀹屾垚RMI鐨勮繛鎺ュ拰榪滅▼瀵硅薄鐨勫垵濮嬪寲銆?br>3銆丼tubs 鍜孲keletons

    銆銆涓嬩竴姝ュ氨鏄浣跨敤RMI緙栬瘧鍣╮mic鏉ョ敓鎴愭々鍜屾鏋舵枃浠訛紝榪欎釜緙栬瘧榪愯鍦ㄨ繙紼嬫湇鍔″疄鐜扮被鏂囦歡涓娿?br>       鍦↖DE涓璪uild鎵鏈夌▼搴?br>銆銆>rmic rmiDemoCalculatorImpl

    銆銆鍦ㄤ綘鐨勭洰褰曚笅榪愯涓婇潰鐨勫懡浠わ紝鎴愬姛鎵ц瀹屼笂闈㈢殑鍛戒護浣犲彲浠ュ彂鐜頒竴涓狢alculator_stub.class鏂囦歡錛屽鏋滀綘鏄嬌鐢ㄧ殑Java2SDK錛岄偅涔堜綘榪樺彲浠ュ彂鐜癈alculator_Skel.class鏂囦歡銆?br>
    銆銆4銆佷富鏈烘湇鍔″櫒

    銆銆榪滅▼RMI鏈嶅姟蹇呴』鏄湪涓涓湇鍔″櫒涓繍琛岀殑銆侰alculatorServer綾繪槸涓涓潪甯哥畝鍗曠殑鏈嶅姟鍣ㄣ?br>

    1. package rmiDemo;
    2. //CalculatorServer.java
    3. import java.rmi.Naming;
    4. public class CalculatorServer {
    5.    public CalculatorServer() {
    6.      try {
    7.        Calculator c = new CalculatorImpl();
    8.        Naming.rebind("rmi://localhost:1099/CalculatorService", c);
    9.      } catch (Exception e) {
    10.        System.out.println("Trouble: " + e);
    11.      }
    12.    }
    13.    public static void main(String args[]) {
    14.      new CalculatorServer();
    15.    }
    16. }

    銆銆5銆佸鎴風

    銆銆瀹㈡埛绔簮浠g爜濡備笅錛?br>

    1. package rmiDemo;
    2. //CalculatorClient.java
    3. import java.rmi.Naming
    4. import java.rmi.RemoteException
    5. import java.net.MalformedURLException
    6. import java.rmi.NotBoundException
    7. public class CalculatorClient { 
    8.     public static void main(String[] args) { 
    9.         try { 
    10.             Calculator c = (Calculator)
    11.                            Naming.lookup(
    12.                  "rmi://localhost
    13.                         /CalculatorService"); 
    14.             System.out.println( c.sub(4, 3) ); 
    15.             System.out.println( c.add(4, 5) ); 
    16.             System.out.println( c.mul(3, 6) ); 
    17.             System.out.println( c.div(9, 3) ); 
    18.         } 
    19.         catch (MalformedURLException murle) { 
    20.             System.out.println(); 
    21.             System.out.println(
    22.               "MalformedURLException"); 
    23.             System.out.println(murle); 
    24.         } 
    25.         catch (RemoteException re) { 
    26.             System.out.println(); 
    27.             System.out.println(
    28.                         "RemoteException"); 
    29.             System.out.println(re); 
    30.         } 
    31.         catch (NotBoundException nbe) { 
    32.             System.out.println(); 
    33.             System.out.println(
    34.                        "NotBoundException"); 
    35.             System.out.println(nbe); 
    36.         } 
    37.         catch (
    38.             java.lang.ArithmeticException
    39.                                       ae) { 
    40.             System.out.println(); 
    41.             System.out.println(
    42.              "java.lang.ArithmeticException"); 
    43.             System.out.println(ae); 
    44.         } 
    45.     } 

    銆銆淇濆瓨榪欎釜瀹㈡埛绔▼搴忓埌浣犵殑鐩綍涓嬶紙娉ㄦ剰榪欎釜鐩綍鏄竴寮濮嬪緩绔嬮偅涓紝鎵鏈夌殑鎴戜滑鐨勬枃浠墮兘鍦ㄩ偅涓洰褰曚笅錛夈?br>         鍦↖DE涓璪uild鎵鏈夌▼搴忋?br>銆銆6銆佽繍琛孯MI緋葷粺

    銆銆鐜板湪鎴戜滑寤虹珛浜嗘墍鏈夎繍琛岃繖涓畝鍗昍MI緋葷粺鎵闇鐨勬枃浠訛紝鐜板湪鎴戜滑緇堜簬鍙互榪愯榪欎釜RMI緋葷粺鍟︼紒鏉ヤ韓鍙楀惂銆?br>
    銆銆鎴戜滑鏄湪鍛戒護鎺у埗鍙頒笅榪愯榪欎釜緋葷粺鐨勶紝浣犲繀欏誨紑鍚笁涓帶鍒跺彴紿楀彛錛屼竴涓繍琛屾湇鍔″櫒錛屼竴涓繍琛屽鎴風錛岃繕鏈変竴涓繍琛孯MIRegistry銆?br>
    銆銆棣栧厛榪愯娉ㄥ唽紼嬪簭RMIRegistry錛屼綘蹇呴』鍦ㄥ寘鍚綘鍒氬啓鐨勭被鐨勯偅涔堢洰褰曚笅榪愯榪欎釜娉ㄥ唽紼嬪簭銆?br>
    銆銆>rmiregistry

    銆銆濂斤紝榪欎釜鍛戒護鎴愬姛鐨勮瘽錛屾敞鍐岀▼搴忓凡緇忓紑濮嬭繍琛屼簡錛屼笉瑕佺浠栵紝鐜板湪鍒囨崲鍒板彟澶栦竴涓帶鍒跺彴錛屽湪絎簩涓帶鍒跺彴閲岋紝鎴戜滑榪愯鏈嶅姟鍣–alculatorService錛屽洜涓篟MI鐨勫畨鍏ㄦ満鍒跺皢鍦ㄦ湇鍔$鍙戠敓浣滅敤,鎵浠ヤ綘蹇呴』澧炲姞涓鏉″畨鍏ㄧ瓥鐣ャ備互涓嬫槸瀵瑰簲瀹夊叏絳栫暐鐨勪緥瀛?nbsp;
    grant {
    permission java.security.AllPermission "", "";
    };

    銆銆娉ㄦ剰:榪欐槸涓鏉℃渶綆鍗曠殑瀹夊叏絳栫暐,瀹冨厑璁鎬換浣曚漢鍋氫換浣曚簨,瀵逛簬浣犵殑鏇村姞鍏抽敭鎬х殑搴旂敤,浣犲繀欏繪寚瀹氭洿鍔犺緇嗗畨鍏ㄧ瓥鐣ャ?br>
    銆銆鐜板湪涓轟簡榪愯鏈嶅姟绔紝浣犻渶瑕侀櫎瀹㈡埛綾?CalculatorClient.class)涔嬪鐨勬墍鏈夌殑綾繪枃浠躲傜‘璁ゅ畨鍏ㄧ瓥鐣ュ湪policy.txt鏂囦歡涔嬪悗,浣跨敤濡備笅鍛戒護鏉ヨ繍琛屾湇鍔″櫒銆?br>
    銆銆> java -Djava.security.policy=C:\Documents and Settings\Administrator\RMI\build\classes\  rmiDemo.CalculatorServer

    銆銆榪欎釜鏈嶅姟鍣ㄥ氨寮濮嬪伐浣滀簡錛屾妸鎺ュ彛鐨勫疄鐜板姞杞藉埌鍐呭瓨絳夊緟瀹㈡埛绔殑鑱旀帴銆傚ソ鐜板湪鍒囨崲鍒扮涓変釜鎺у埗鍙幫紝鍚姩鎴戜滑鐨勫鎴風銆?br>
    銆銆涓轟簡鍦ㄥ叾浠栫殑鏈哄櫒榪愯瀹㈡埛绔▼搴忎綘闇瑕佷竴涓繙紼嬫帴鍙?Calculator.class) 鍜屼竴涓猻tub(CalculatorImpl_Stub.class)銆?nbsp;浣跨敤濡備笅鍛戒護榪愯瀹㈡埛绔?br>
    銆銆 > java -Djava.security.policy=C:\Documents and Settings\Administrator\RMI\build\classes\ rmiDemo. CalculatorClient

    銆銆濡傛灉鎵鏈夌殑榪欎簺閮芥垚鍔熻繍琛岋紝浣犲簲璇ョ湅鍒頒笅闈㈢殑杈撳嚭錛?br>銆銆1
    銆銆9
    銆銆18
    銆銆3

    銆銆



  • ]]>
    主站蜘蛛池模板: 蛟河市| 怀仁县| 兴文县| 随州市| 五大连池市| 犍为县| 新化县| 芦溪县| 若尔盖县| 同江市| 东阿县| 龙里县| 嘉荫县| 桐梓县| 巍山| 遂昌县| 鸡东县| 土默特左旗| 凭祥市| 和硕县| 长春市| 万年县| 洞口县| 集安市| 泾阳县| 阳信县| 开鲁县| 湾仔区| 林口县| 中江县| 肥东县| 高雄市| 资兴市| 东乌| 洪湖市| 抚顺县| 屏山县| 门源| 抚松县| 平邑县| 丹寨县|