锘??xml version="1.0" encoding="utf-8" standalone="yes"?>国产精品亚洲片在线观看不卡,亚洲av日韩片在线观看,MM131亚洲国产美女久久http://www.tkk7.com/mikechen/category/50936.html鐢?shù)瀛愬晢鍔℃妧鏈灦鏋?/description>zh-cnFri, 30 Mar 2012 03:32:33 GMTFri, 30 Mar 2012 03:32:33 GMT60Hadoop-璇﹁Вhttp://www.tkk7.com/mikechen/archive/2012/03/30/373028.html闄堢澘闄堢澘Fri, 30 Mar 2012 02:14:00 GMThttp://www.tkk7.com/mikechen/archive/2012/03/30/373028.htmlhttp://www.tkk7.com/mikechen/comments/373028.htmlhttp://www.tkk7.com/mikechen/archive/2012/03/30/373028.html#Feedback0http://www.tkk7.com/mikechen/comments/commentRss/373028.htmlhttp://www.tkk7.com/mikechen/services/trackbacks/373028.html鎵撶畻鍚庨潰鍦╤adoop涓婅姳鏃墮棿鎶婇噷闈㈢殑鍐呭錛屽ソ濂藉瀛︼紝榪欑瘒鍗氬灝嗗湪鍚庨潰闄嗙畫鏇存柊hadoop瀛︿範(fàn)絎旇銆?img src ="http://www.tkk7.com/mikechen/aggbug/373028.html" width = "1" height = "1" />

闄堢澘 2012-03-30 10:14 鍙戣〃璇勮
]]>
搴曞眰鏋舵瀯-榪滅▼閫氳-Minahttp://www.tkk7.com/mikechen/archive/2012/03/15/371938.html闄堢澘闄堢澘Thu, 15 Mar 2012 06:49:00 GMThttp://www.tkk7.com/mikechen/archive/2012/03/15/371938.htmlhttp://www.tkk7.com/mikechen/comments/371938.htmlhttp://www.tkk7.com/mikechen/archive/2012/03/15/371938.html#Feedback0http://www.tkk7.com/mikechen/comments/commentRss/371938.htmlhttp://www.tkk7.com/mikechen/services/trackbacks/371938.html涓錛歁ina姒傝
    Apache Mina鏄竴涓兘澶熷府鍔╃敤鎴峰紑鍙戦珮鎬ц兘鍜岄珮浼哥緝鎬х綉緇滃簲鐢ㄧ▼搴忕殑妗嗘灦銆傚畠閫氳繃Java nio鎶鏈熀浜嶵CP/IP鍜孶DP/IP鍗忚鎻愪緵浜嗘娊璞$殑銆佷簨浠墮┍鍔ㄧ殑銆佸紓姝ョ殑API銆?div>濡備笅鐨勭壒鎬э細(xì)
1銆? 鍩轟簬Java nio鐨凾CP/IP鍜孶DP/IP瀹炵幇
鍩轟簬RXTX鐨勪覆鍙i氫俊錛圧S232錛?/div>
VM 閫氶亾閫氫俊
2銆侀氳繃filter鎺ュ彛瀹炵幇鎵╁睍錛岀被浼間簬Servlet filters
3銆乴ow-level錛堝簳灞傦級鍜宧igh-level錛堥珮綰у皝瑁咃級鐨刟pi錛?/div>
       low-level錛氫嬌鐢˙yteBuffers
       High-level錛氫嬌鐢ㄨ嚜瀹氫箟鐨勬秷鎭璞″拰瑙g爜鍣?/div>
4銆丠ighly customizable錛堟槗鐢ㄧ殑錛夌嚎紼嬫ā寮忥紙MINA2.0 宸茬粡紱佺敤綰跨▼妯″瀷浜嗭級錛?/div>
       鍗曠嚎紼?/div>
       綰跨▼姹?/div>
       澶氫釜綰跨▼姹?/div>
5銆佸熀浜巎ava5 SSLEngine鐨凷SL銆乀LS銆丼tartTLS鏀寔
6銆佽礋杞藉鉤琛?/div>
7銆佷嬌鐢╩ock榪涜鍗曞厓嫻嬭瘯
8銆乯mx鏁村悎
9銆佸熀浜嶴treamIoHandler鐨勬祦寮廔/O鏀寔
10銆両OC瀹瑰櫒鐨勬暣鍚堬細(xì)Spring銆丳icoContainer
11銆佸鉤婊戣縼縐誨埌Netty騫沖彴

浜岋細(xì)瀹炶返
    棣栧厛璁蹭竴涓嬪鎴風(fēng)鐨勯氫俊榪囩▼錛?br />
1.閫氳繃SocketConnector鍚屾湇鍔″櫒绔緩绔嬭繛鎺?nbsp;
2.閾炬帴寤虹珛涔嬪悗I/O鐨勮鍐欎氦緇欎簡I/O Processor綰跨▼錛孖/O Processor鏄綰跨▼鐨?nbsp;
3.閫氳繃I/O Processor璇誨彇鐨勬暟鎹粡榪嘔oFilterChain閲屾墍鏈夐厤緗殑IoFilter錛孖oFilter榪涜娑堟伅鐨勮繃婊わ紝鏍煎紡鐨勮漿鎹紝鍦ㄨ繖涓眰闈㈠彲浠ュ埗瀹氫竴浜涜嚜瀹氫箟鐨勫崗璁?nbsp;
4.鏈鍚嶪oFilter灝嗘暟鎹氦緇橦andler榪涜涓氬姟澶勭悊錛屽畬鎴愪簡鏁翠釜璇誨彇鐨勮繃紼?nbsp;
5.鍐欏叆榪囩▼涔熸槸綾諱技錛屽彧鏄垰濂藉掕繃鏉ワ紝閫氳繃IoSession.write鍐欏嚭鏁版嵁錛岀劧鍚嶩andler榪涜鍐欏叆鐨勪笟鍔″鐞嗭紝澶勭悊瀹屾垚鍚庝氦緇橧oFilterChain錛岃繘琛屾秷鎭繃婊ゅ拰鍗忚鐨勮漿鎹紝鏈鍚庨氳繃I/O Processor灝嗘暟鎹啓鍑哄埌socket閫氶亾 
IoFilterChain浣滀負(fù)娑堟伅榪囨護(hù)閾?nbsp;
1.璇誨彇鐨勬椂鍊欐槸浠庝綆綰у崗璁埌楂樼駭鍗忚鐨勮繃紼嬶紝涓鑸潵璇翠粠byte瀛楄妭閫愭笎杞崲鎴愪笟鍔″璞$殑榪囩▼ 
2.鍐欏叆鐨勬椂鍊欎竴鑸槸浠庝笟鍔″璞″埌瀛楄妭byte鐨勮繃紼?nbsp;
IoSession璐┛鏁翠釜閫氫俊榪囩▼鐨勫緇?nbsp;
    瀹㈡埛绔氫俊榪囩▼ 

   
1.鍒涘緩鏈嶅姟鍣?br />    package com.gewara.web.module.base;

import java.io.IOException;
import java.net.InetSocketAddress;
import java.nio.charset.Charset;

import org.apache.mina.core.service.IoAcceptor;
import org.apache.mina.filter.codec.ProtocolCodecFilter;
import org.apache.mina.filter.codec.textline.TextLineCodecFactory;
import org.apache.mina.filter.logging.LoggingFilter;
import org.apache.mina.transport.socket.nio.NioSocketAcceptor;

/**
 * Mina鏈嶅姟鍣?br /> * 
 * 
@author mike
 *
 * 
@since 2012-3-15
 
*/
public class HelloServer {

        private static final int PORT = 8901;// 瀹氫箟鐩戝惉绔彛

        public static void main(String[] args) throws IOException{
            // 鍒涘緩鏈嶅姟绔洃鎺х嚎紼?/span>
            IoAcceptor acceptor = new NioSocketAcceptor();
            
            // 璁劇疆鏃ュ織璁板綍鍣?/span>
            acceptor.getFilterChain().addLast("logger", new LoggingFilter());
            
            // 璁劇疆緙栫爜榪囨護(hù)鍣?/span>
            acceptor.getFilterChain().addLast("codec",new ProtocolCodecFilter(new TextLineCodecFactory(Charset.forName("UTF-8"))));
           
            // 鎸囧畾涓氬姟閫昏緫澶勭悊鍣?/span>
            acceptor.setHandler(new HelloServerHandler());
            
            // 璁劇疆绔彛鍙?/span>
            acceptor.setDefaultLocalAddress(new InetSocketAddress(PORT));
            
            // 鍚姩鐩戝惉綰跨▼
            acceptor.bind();
        }
}
 
2.鍒涘緩鏈嶅姟鍣ㄧ涓氬姟閫昏緫
    
package com.gewara.web.module.base;

import org.apache.mina.core.service.IoHandlerAdapter;
import org.apache.mina.core.session.IoSession;

/**
 * 鏈嶅姟鍣ㄧ涓氬姟閫昏緫
 * 
 * 
@author mike
 *
 * 
@since 2012-3-15
 
*/
public class HelloServerHandler extends IoHandlerAdapter {
         @Override
        /**
         * 榪炴帴鍒涘緩浜嬩歡
         
*/
        public void sessionCreated(IoSession session){
            // 鏄劇ず瀹㈡埛绔殑ip鍜岀鍙?/span>
            System.out.println(session.getRemoteAddress().toString());
        }

        @Override
        /**
         * 娑堟伅鎺ユ敹浜嬩歡
         
*/
        public void messageReceived(IoSession session, Object message) throws Exception{
            String str = message.toString();
            if (str.trim().equalsIgnoreCase("quit")){
                // 緇撴潫浼?xì)璇?/span>
                session.close(true);
                return;
            }
            
            // 榪斿洖娑堟伅瀛楃涓?/span>
            session.write("Hi Client!");
            // 鎵撳嵃瀹㈡埛绔紶鏉ョ殑娑堟伅鍐呭
            System.out.println("Message written" + str);
        }
}

3.鍒涘緩瀹㈡埛绔?br />     package com.gewara.web.module.base;

import java.net.InetSocketAddress;
import java.nio.charset.Charset;

import org.apache.mina.core.future.ConnectFuture;
import org.apache.mina.filter.codec.ProtocolCodecFilter;
import org.apache.mina.filter.codec.textline.TextLineCodecFactory;
import org.apache.mina.filter.logging.LoggingFilter;
import org.apache.mina.transport.socket.nio.NioSocketConnector;

/**
 * Mina瀹㈡埛绔?br /> * 
 * 
@author mike
 *
 * 
@since 2012-3-15
 
*/
public class HelloClient {
       public static void main(String[] args){
            // 鍒涘緩瀹㈡埛绔繛鎺ュ櫒.
            NioSocketConnector connector = new NioSocketConnector();
            
            // 璁劇疆鏃ュ織璁板綍鍣?/span>
            connector.getFilterChain().addLast("logger", new LoggingFilter());
            
            // 璁劇疆緙栫爜榪囨護(hù)鍣?/span>
            connector.getFilterChain().addLast("codec", 
                    new ProtocolCodecFilter(new TextLineCodecFactory(Charset.forName("UTF-8")))); 
            
            // 璁劇疆榪炴帴瓚呮椂媯鏌ユ椂闂?/span>
            connector.setConnectTimeoutCheckInterval(30);
            
            // 璁劇疆浜嬩歡澶勭悊鍣?/span>
            connector.setHandler(new HelloClientHandler());
            
            // 寤虹珛榪炴帴
            ConnectFuture cf = connector.connect(new InetSocketAddress("192.168.2.89", 8901));
            
            // 絳夊緟榪炴帴鍒涘緩瀹屾垚
            cf.awaitUninterruptibly();
            
            // 鍙戦佹秷鎭?nbsp; 
            cf.getSession().write("Hi Server!");
           
            // 鍙戦佹秷鎭?/span>
            cf.getSession().write("quit");
            
            // 絳夊緟榪炴帴鏂紑
            cf.getSession().getCloseFuture().awaitUninterruptibly();

            // 閲婃斁榪炴帴
            connector.dispose();
        }
}

4.瀹㈡埛绔笟鍔¢昏緫
package com.gewara.web.module.base;

import org.apache.mina.core.service.IoHandlerAdapter;
import org.apache.mina.core.session.IoSession;

public class HelloClientHandler extends IoHandlerAdapter {
        @Override
        /**
         * 娑堟伅鎺ユ敹浜嬩歡
         
*/
        public void messageReceived(IoSession session, Object message) throws Exception{
            //鏄劇ず鎺ユ敹鍒扮殑娑堟伅
            System.out.println("server message:"+message.toString());
        }
}

5.鍏堝惎鍔ㄦ湇鍔″櫒绔紝鐒跺悗鍚姩瀹㈡埛绔?br />
2012-03-15 14:45:41,456  INFO  logging.LoggingFilter - CREATED
/192.168.2.89:2691
2012-03-15 14:45:41,456  INFO  logging.LoggingFilter - OPENED
2012-03-15 14:45:41,487  INFO  logging.LoggingFilter - RECEIVED: HeapBuffer[pos=0 lim=11 cap=2048: 48 69 20 53 65 72 76 65 72 21 0A]
2012-03-15 14:45:41,487  DEBUG codec.ProtocolCodecFilter - Processing a MESSAGE_RECEIVED for session 1
Message writtenHi Server!
2012-03-15 14:45:41,487  INFO  logging.LoggingFilter - SENT: HeapBuffer[pos=0 lim=0 cap=0: empty]
2012-03-15 14:45:41,487  INFO  logging.LoggingFilter - RECEIVED: HeapBuffer[pos=0 lim=5 cap=2048: 71 75 69 74 0A]
2012-03-15 14:45:41,487  DEBUG codec.ProtocolCodecFilter - Processing a MESSAGE_RECEIVED for session 1
2012-03-15 14:45:41,487  INFO  logging.LoggingFilter - CLOSED

涓?鍒嗘瀽婧愮爜
1.棣栧厛鐪嬫湇鍔″櫒
            // 鍒涘緩鏈嶅姟绔洃鎺х嚎紼?/span>
            IoAcceptor acceptor = new NioSocketAcceptor();
            
            // 璁劇疆鏃ュ織璁板綍鍣?/span>
            acceptor.getFilterChain().addLast("logger", new LoggingFilter());
            
            // 璁劇疆緙栫爜榪囨護(hù)鍣?/span>
            acceptor.getFilterChain().addLast("codec",new ProtocolCodecFilter(new TextLineCodecFactory(Charset.forName("UTF-8"))));
           
            // 鎸囧畾涓氬姟閫昏緫澶勭悊鍣?/span>
            acceptor.setHandler(new HelloServerHandler());
            
            // 璁劇疆绔彛鍙?/span>
            acceptor.setDefaultLocalAddress(new InetSocketAddress(PORT));
            
            // 鍚姩鐩戝惉綰跨▼
            acceptor.bind();

  1)鍏堝垱寤?span style="font-size: 13px; background-color: #eeeeee; ">NioSocketAcceptor nio鐨勬帴鏀跺櫒錛岃皥鍒癝ocket灝辮璇村埌Reactor妯″紡 
    褰撳墠鍒嗗竷寮忚綆椼Web Services鐩涜澶╀笅錛岃繖浜涚綉緇滄湇鍔$殑搴曞眰閮界涓嶅紑瀵箂ocket鐨勬搷浣溿備粬浠兘鏈変竴涓叡鍚岀殑緇撴瀯錛?/span>
1. Read request
2. Decode request
3. Process service                                     
4. Encode reply
5. Send reply 

浣嗚繖縐嶆ā寮忓湪鐢ㄦ埛璐熻澆澧炲姞鏃訛紝鎬ц兘灝嗕笅闄嶉潪甯哥殑蹇傛垜浠渶瑕侀噸鏂板鎵句竴涓柊鐨勬柟妗堬紝淇濇寔鏁版嵁澶勭悊鐨勬祦鐣咃紝寰堟樉鐒訛紝浜嬩歡瑙﹀彂鏈哄埗鏄渶濂界殑瑙e喅鍔炴硶錛屽綋鏈変簨浠跺彂鐢熸椂錛屼細(xì)瑙﹀姩handler,鐒跺悗寮濮嬫暟鎹殑澶勭悊銆?br />Reactor妯″紡綾諱技浜嶢WT涓殑Event澶勭悊銆?/p>

Reactor妯″紡鍙備笌鑰?/strong>

1.Reactor 璐熻矗鍝嶅簲IO浜嬩歡錛屼竴鏃﹀彂鐢燂紝騫挎挱鍙戦佺粰鐩稿簲鐨凥andler鍘誨鐞?榪欑被浼間簬AWT鐨則hread
2.Handler 鏄礋璐i潪鍫靛琛屼負(fù)錛岀被浼間簬AWT ActionListeners錛涘悓鏃惰礋璐e皢handlers涓巈vent浜嬩歡緇戝畾錛岀被浼間簬AWT addActionListener


騫跺彂緋葷粺甯擱噰鐢╮eactor妯″紡錛岀畝縐拌瀵熻呮ā寮忥紝浠f浛甯哥敤鐨勫綰跨▼澶勭悊鏂瑰紡錛?strong>鍒╃敤鏈夐檺鐨勭郴緇熺殑璧勬簮錛屾彁楂樼郴緇熺殑鍚炲悙閲?/strong>銆?br />

鍙互鐪嬩竴涓嬭繖綃囨枃绔狅紝璁茶В鐨勫緢鐢熷姩鍏蜂綋錛屼竴鐪嬪氨鏄庣櫧reactor妯″紡鐨勫ソ澶?a >http://daimojingdeyu.iteye.com/blog/828696 
Reactor妯″紡鏄紪鍐欓珮鎬ц兘緗戠粶鏈嶅姟鍣ㄧ殑蹇呭鎶鏈箣涓錛屽畠鍏鋒湁濡備笅鐨勪紭鐐癸細(xì)
    1錛夊搷搴斿揩錛屼笉蹇呬負(fù)鍗曚釜鍚屾鏃墮棿鎵闃誨錛岃櫧鐒禦eactor鏈韓渚濈劧鏄悓姝ョ殑錛?/span>
    2錛夌紪紼嬬浉瀵圭畝鍗曪紝鍙互鏈澶х▼搴︾殑閬垮厤澶嶆潅鐨勫綰跨▼鍙?qiáng)鍚屾闂锛岒q朵笖閬垮厤浜嗗綰跨▼/榪涚▼鐨勫垏鎹㈠紑閿錛?/span>
    3錛夊彲鎵╁睍鎬э紝鍙互鏂逛究鐨勯氳繃澧炲姞Reactor瀹炰緥涓暟鏉ュ厖鍒嗗埄鐢–PU璧勬簮錛?/span>
    4錛夊彲澶嶇敤鎬э紝reactor妗嗘灦鏈韓涓庡叿浣撲簨浠跺鐞嗛昏緫鏃犲叧錛屽叿鏈夊緢楂樼殑澶嶇敤鎬э紱 

2)鍏舵錛屽啀璇磋NIO鐨勫熀鏈師鐞嗗拰浣跨敤
    NIO 鏈変竴涓富瑕佺殑綾籗elector,榪欎釜綾諱技涓涓瀵熻咃紝鍙鎴戜滑鎶婇渶瑕佹帰鐭ョ殑socketchannel鍛婅瘔Selector,鎴戜滑鎺ョ潃鍋氬埆鐨勪簨鎯咃紝褰撴湁浜嬩歡鍙戠敓鏃訛紝浠栦細(xì)閫氱煡鎴戜滑錛屼紶鍥炰竴緇?SelectionKey,鎴戜滑璇誨彇榪欎簺Key,灝變細(xì)鑾峰緱鎴戜滑鍒氬垰娉ㄥ唽榪囩殑socketchannel,鐒跺悗錛屾垜浠粠榪欎釜Channel涓鍙栨暟鎹紝鏀懼績錛屽寘鍑嗚兘澶熻鍒幫紝鎺ョ潃鎴戜滑鍙互澶勭悊榪欎簺鏁版嵁銆?div>銆銆Selector鍐呴儴鍘熺悊瀹為檯鏄湪鍋氫竴涓鎵娉ㄥ唽鐨刢hannel鐨勮疆璇㈣闂紝涓嶆柇鐨勮疆璇?鐩墠灝辮繖涓涓畻娉?錛屼竴鏃﹁疆璇㈠埌涓涓猚hannel鏈夋墍娉ㄥ唽鐨勪簨鎯呭彂鐢燂紝姣斿鏁版嵁鏉ヤ簡錛屼粬灝變細(xì)绔欒搗鏉ユ姤鍛婏紝浜ゅ嚭涓鎶婇挜鍖欙紝璁╂垜浠氳繃榪欐妸閽ュ寵(SelectionKey琛ㄧず SelectableChannel 鍦?Selector 涓殑娉ㄥ唽鐨勬爣璁般?)鏉ヨ鍙栬繖涓猚hannel鐨勫唴瀹廣?/div>











































闄堢澘 2012-03-15 14:49 鍙戣〃璇勮
]]>搴曞眰鏋舵瀯-榪滅▼閫氳http://www.tkk7.com/mikechen/archive/2012/03/12/371703.html闄堢澘闄堢澘Mon, 12 Mar 2012 01:57:00 GMThttp://www.tkk7.com/mikechen/archive/2012/03/12/371703.htmlhttp://www.tkk7.com/mikechen/comments/371703.htmlhttp://www.tkk7.com/mikechen/archive/2012/03/12/371703.html#Feedback2http://www.tkk7.com/mikechen/comments/commentRss/371703.htmlhttp://www.tkk7.com/mikechen/services/trackbacks/371703.html涓錛氬熀鏈師鐞?/strong>
    涓昏鏄瀹炵幇緗戠粶涔嬮棿鐨勯氳錛?span style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25px; text-align: left; background-color: #ffffff; ">緗戠粶閫氫俊闇瑕佸仛鐨勫氨鏄皢嫻佷粠涓鍙拌綆楁満浼犺緭鍒板彟澶栦竴鍙拌綆楁満錛屽熀浜庝紶杈撳崗璁拰緗戠粶IO鏉ュ疄鐜幫紝鍏朵腑浼犺緭鍗忚姣旇緝鍑哄悕鐨勬湁http銆?tcp銆乽dp絳夌瓑錛宧ttp銆乼cp銆乽dp閮芥槸鍦ㄥ熀浜嶴ocket姒傚康涓婁負(fù)鏌愮被搴旂敤鍦烘櫙鑰屾墿灞曞嚭鐨勪紶杈撳崗璁紝緗戠粶IO錛屼富瑕佹湁bio銆乶io銆乤io 涓夌鏂瑰紡錛屾墍鏈夌殑鍒嗗竷寮忓簲鐢ㄩ氳閮藉熀浜庤繖涓師鐞嗚屽疄鐜般?br />
浜岋細(xì)瀹炶返
鍦ㄥ垎甯冨紡鏈嶅姟妗嗘灦涓紝涓涓渶鍩虹鐨勯棶棰樺氨鏄繙紼嬫湇鍔℃槸鎬庝箞閫氳鐨勶紝鍦↗ava棰嗗煙涓湁寰堝鍙疄鐜拌繙紼嬮氳鐨勬妧鏈?RMI銆丮INA銆丒SB銆丅urlap銆丠essian銆丼OAP銆丒JB鍜孞MS
鏃㈢劧寮曞叆鍑轟簡榪欎箞澶氭妧鏈紝閭f垜浠氨欏洪亾娣卞叆鎸栨帢涓嬪幓錛屼簡瑙f瘡涓妧鏈鏋惰儗鍚庣殑涓滆タ錛?br />1.棣栧厛鐪婻MI
     RMI涓昏鍖呭惈濡備笅鍐呭錛?nbsp;
     榪滅▼鏈嶅姟鐨勬帴鍙e畾涔?nbsp;
      ·榪滅▼鏈嶅姟鎺ュ彛鐨勫叿浣撳疄鐜?nbsp;
      ·妗╋紙Stub錛夊拰妗嗘灦錛圫keleton錛?/span>鏂囦歡 
      ·涓涓繍琛岃繙紼嬫湇鍔$殑鏈嶅姟鍣?nbsp;
      ·涓涓猂MI鍛藉悕鏈嶅姟錛屽畠鍏佽瀹㈡埛绔?/a>鍘誨彂鐜拌繖涓繙紼嬫湇鍔?nbsp;
      ·
綾?/a>鏂囦歡鐨勬彁渚涜咃紙涓涓狧TTP鎴栬匜TP鏈嶅姟鍣級 
      ·涓涓渶瑕佽繖涓繙紼嬫湇鍔$殑瀹㈡埛绔▼搴?/span> 
    
    鏉ョ湅涓嬪熀浜嶳MI鐨勪竴嬈″畬鏁寸殑榪滅▼閫氫俊榪囩▼鐨勫師鐞嗭細(xì)
    1)瀹㈡埛绔彂璧瘋姹傦紝璇鋒眰杞氦鑷砇MI瀹㈡埛绔殑stub綾伙紱
    2)stub綾誨皢璇鋒眰鐨勬帴鍙c佹柟娉曘佸弬鏁扮瓑淇℃伅榪涜搴忓垪鍖栵紱
    3)鍩轟簬tcp/ip灝嗗簭鍒楀寲鍚庣殑嫻佷紶杈撹嚦鏈嶅姟鍣ㄧ錛?/div>
    4)鏈嶅姟鍣ㄧ鎺ユ敹鍒版祦鍚庤漿鍙戣嚦鐩稿簲鐨剆kelton綾伙紱
    5)skelton綾誨皢璇鋒眰鐨勪俊鎭弽搴忓垪鍖栧悗璋冪敤瀹為檯鐨勫鐞嗙被錛?/div>
    6)澶勭悊綾誨鐞嗗畬姣曞悗灝嗙粨鏋滆繑鍥炵粰skelton綾伙紱
    7)Skelton綾誨皢緇撴灉搴忓垪鍖栵紝閫氳繃tcp/ip灝嗘祦浼犻佺粰瀹㈡埛绔殑stub錛?/div>
    8)stub鍦ㄦ帴鏀跺埌嫻佸悗鍙嶅簭鍒楀寲錛屽皢鍙嶅簭鍒楀寲鍚庣殑Java Object榪斿洖緇欒皟鐢ㄨ呫?br />
     RMI搴旂敤綰у崗璁唴瀹癸細(xì)
1銆佷紶杈撶殑鏍囧噯鏍煎紡鏄粈涔堬紵
      鏄疛ava ObjectStream銆?/div>
2銆佹庝箞鏍峰皢璇鋒眰杞寲涓轟紶杈撶殑嫻侊紵
      鍩轟簬Java涓茶鍖栨満鍒跺皢璇鋒眰鐨刯ava object淇℃伅杞寲涓烘祦銆?/div>
3銆佹庝箞鎺ユ敹鍜屽鐞嗘祦錛?/div>
      鏍規(guī)嵁閲囩敤鐨勫崗璁惎鍔ㄧ浉搴旂殑鐩戝惉绔彛錛屽綋鏈夋祦榪涘叆鍚庡熀浜嶫ava涓茶鍖栨満鍒跺皢嫻佽繘琛屽弽搴忓垪鍖栵紝騫舵牴鎹甊MI鍗忚鑾峰彇鍒扮浉搴旂殑澶勭悊瀵硅薄淇℃伅錛岃繘琛岃皟鐢ㄥ茍澶勭悊錛屽鐞嗗畬姣曞悗鐨勭粨鏋滃悓鏍峰熀浜巎ava涓茶鍖栨満鍒惰繘琛岃繑鍥炪?/div>
4銆佷紶杈撳崗璁槸錛?/div>
      tcp/ip銆?br />
鍘熺悊璁蹭簡錛屽紑濮嬪疄璺碉細(xì)
鍒涘緩RMI紼嬪簭鐨?涓楠わ細(xì) 
1銆佸畾涔変竴涓繙紼嬫帴鍙g殑鎺ュ彛錛岃鎺ュ彛涓殑姣忎竴涓柟娉曞繀欏誨0鏄庡畠?yōu)畣漶旂敓涓涓猂emoteException寮傚父銆?nbsp;
2銆佸畾涔変竴涓疄鐜拌鎺ュ彛鐨勭被銆?nbsp;
3銆佷嬌鐢≧MIC紼嬪簭鐢熸垚榪滅▼瀹炵幇鎵闇鐨勬畫鏍瑰拰妗嗘灦銆?nbsp;
4銆佸垱寤轟竴涓湇鍔″櫒錛岀敤浜庡彂甯?涓啓濂界殑綾匯?nbsp;
5. 鍒涘緩涓涓鎴風(fēng)▼搴忚繘琛孯MI璋冪敤銆?nbsp;
6銆佸惎鍔╮miRegistry騫惰繍琛岃嚜宸辯殑榪滅▼鏈嶅姟鍣ㄥ拰瀹㈡埛紼嬪簭     
    
 
1錛夐鍏堝垱寤鴻繙紼嬫帴鍙o細(xì)
 /**
 * 榪滅▼鎺ュ彛
 * 
 * @author mike
 *
 * 
@since 2012-3-14
 
*/
public interface Hello extends Remote {
    /**
     * 嫻嬭瘯rmi 
     * 
     * 
@return   hello
     * 
@throws RemoteException
     
*/
    public String hello()throws RemoteException;
}
       
     2錛夊垱寤烘帴鍙e疄鐜?br />        package com.gewara.rmi;

import java.rmi.RemoteException;
import java.rmi.server.UnicastRemoteObject;

/**
 * 榪滅▼鎺ュ彛瀹炵幇
 * 
 * 
@author mike
 *
 * 
@since 2012-3-14
 
*/
public class HelloImpl extends UnicastRemoteObject implements Hello {

    /**
     * seria id
     
*/
    private static final long serialVersionUID = -7931720891757437009L;

    protected HelloImpl() throws RemoteException {
        super();
    }

    /**
     * hello瀹炵幇
     * 
     * 
@return hello world
     * 
@throws RemoteException
     
*/
    public String hello() throws RemoteException {
        return "hello world";
    }

}

       3)鍒涘緩鏈嶅姟鍣ㄧ
        package com.gewara.rmi;

import java.rmi.Naming;
import java.rmi.registry.LocateRegistry;

public class Server {
    
    private static final String RMI_URL="rmi://192.168.2.89:10009/server";
    
    /**
     * RMI Server
     
*/
    public Server() {  
        try {  
            //鍒涘緩榪滅▼瀵硅薄
            Hello hello=new HelloImpl();
            
            //鍚姩娉ㄥ唽琛?/span>
            LocateRegistry.createRegistry(10009);
            
            //灝嗗悕縐扮粦瀹氬埌瀵硅薄
            Naming.bind(RMI_URL, hello);
            
        } catch (Exception e) {  
            e.printStackTrace();  
        }  
    }  
    
    /**
     * 
@param args
     
*/
    public static void main(String[] args) {
        new Server();

    }

}

        4)鍒涘緩瀹㈡湇绔?br />        package com.gewara.rmi;

import java.rmi.Naming;

public class Client {

    private static final String RMI_URL="rmi://192.168.2.89:10009/server";
    /**
     * 
@param args
     
*/
    public static void main(String[] args) {
         try {  
                   String result=((Hello)Naming.lookup(RMI_URL)).hello();
                System.out.println(result);  
            } catch (Exception e) {  
                e.printStackTrace();  
            }  
    }

}

    5)鍏堝惎鍔ㄦ湇鍔″櫒绔紝鐒跺悗鍐嶅惎鍔ㄥ鎴風(fēng)
       鏄劇ず緇撴灉錛歨ello world

鐢變簬娑夊強(qiáng)鍒扮殑鍐呭姣旇緝澶氾紝鎵撶畻姣忎竴綃囬噷璁蹭竴涓繙紼嬮氳妗嗘灦錛岀戶緇瑙MI
    
涓夛細(xì)璇﹁ВRMI鍐呴儴鍘熺悊
1. RMI鍩烘湰緇撴瀯錛氬寘鍚袱涓嫭绔嬬殑紼嬪簭錛屾湇鍔″櫒鍜屽鎴風(fēng)錛屾湇鍔″櫒鍒涘緩澶氫釜榪滅▼瀵硅薄錛岃榪滅▼瀵硅薄鑳藉琚紩鐢紝絳夊緟瀹㈡埛绔皟鐢ㄨ繖浜涜繙紼嬪璞$殑鏂規(guī)硶銆傚鎴風(fēng)浠庢湇鍔″櫒鑾峰彇鍒頒竴涓垨鍒欏涓繙紼嬪璞$殑寮曠敤錛岀劧鍚庤皟鐢ㄨ繙紼嬪璞℃柟娉曪紝涓昏娑夊強(qiáng)鍒癛MI鎺ュ彛銆佸洖璋冪瓑鎶鏈?br />
2.RMI鍥炶皟錛氭湇鍔″櫒鎻愪緵榪滅▼瀵硅薄寮曠敤渚涘鎴風(fēng)璋冪敤錛屽鎴風(fēng)涓誨姩璋冪敤鏈嶅姟鍣紝濡傛灉鏈嶅姟鍣ㄤ富鍔ㄦ墦綆楄皟鐢ㄥ鎴風(fēng)錛岃繖灝卞彨鍥炶皟銆?br />
3.鍛藉悕榪滅▼瀵硅薄錛氬鎴風(fēng)閫氳繃涓涓懡鍚嶆垨鍒欎竴涓煡鎵炬湇鍔℃壘鍒拌繙紼嬫湇鍔★紝榪滅▼鏈嶅姟鍖呭惈Java鐨勫懡鍚嶅拰鏌ユ壘鎺ュ彛(Java Naming and Directory Interface)JNDI
RMI鎻愪緵浜嗕竴縐嶆湇鍔?RMI娉ㄥ唽rmiregistry,榛樿绔彛錛?099錛屼富鏈烘彁渚涜繙紼嬫湇鍔★紝鎺ュ彈鏈嶅姟錛屽惎鍔ㄦ敞鍐屾湇鍔$殑鍛戒護(hù)錛歴tart rmiregistry
瀹㈡埛绔嬌鐢ㄤ竴涓潤鎬佺被Naming鍒拌揪RMI娉ㄥ唽澶勶紝閫氳繃鏂規(guī)硶lookup()鏂規(guī)硶錛屽鎴鋒潵璇㈤棶娉ㄥ唽銆?/div>


闄堢澘 2012-03-12 09:57 鍙戣〃璇勮
]]> 主站蜘蛛池模板: 成全视频在线观看免费| 亚洲欧美中文日韩视频| 亚洲AV永久无码区成人网站| 久久精品夜色噜噜亚洲A∨| 亚洲国产香蕉人人爽成AV片久久| 亚洲国产成人五月综合网 | 7777久久亚洲中文字幕| 亚洲三级视频在线| 久久夜色精品国产噜噜亚洲a| 丁香婷婷亚洲六月综合色| 亚洲色图激情文学| 亚洲精品天堂成人片AV在线播放 | 亚洲午夜无码久久久久| 亚洲日产无码中文字幕| 亚洲精品无码不卡| 亚洲国产综合人成综合网站00| 亚洲五月综合缴情婷婷| 亚洲а∨精品天堂在线| 男人和女人高潮免费网站| 国产一级在线免费观看| 91老湿机福利免费体验| 永久免费AV无码国产网站| 国产在线19禁免费观看国产 | 131美女爱做免费毛片| 免费精品国产日韩热久久| 日美韩电影免费看| 亚洲男人天堂2020| 久久亚洲成a人片| 久久亚洲最大成人网4438| 老牛精品亚洲成av人片| 国产在线精品一区免费香蕉| 18禁美女裸体免费网站| 精品免费国产一区二区三区 | 免费观看激色视频网站(性色)| 在线免费观看污网站| 亚洲国产精品成人| 婷婷精品国产亚洲AV麻豆不片| 亚洲AV一二三区成人影片| 一级做性色a爰片久久毛片免费| 一级毛片免费播放| 成年女人毛片免费视频|