<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    讀《J2EE Development without EJB》 筆記六

    Posted on 2006-01-17 16:05 JDeodar 閱讀(482) 評(píng)論(0)  編輯  收藏 所屬分類: J2EE
    Remoting -- 遠(yuǎn)程調(diào)用

    分布式計(jì)算第一法則:不要分布你的對(duì)象--Martin Fowler《企業(yè)應(yīng)用架構(gòu)模式》

    經(jīng)典的Java遠(yuǎn)程方案的根源,RMI(Remote Method Invocation)是JDK1.1中引入的。基于Java的序列化機(jī)制通信協(xié)議時(shí)可接插的。
    所有的RMI服務(wù)必須要實(shí)現(xiàn)某個(gè)繼承自java.rmi.Remote的接口。
    保持遠(yuǎn)程通信無狀態(tài)——這也是任何遠(yuǎn)程調(diào)用應(yīng)該謹(jǐn)記的法則。如果真需要有狀態(tài)的會(huì)話,可以考慮用EJB的有狀態(tài)的Session Beans,或是具備HttpSession功能的web service。

    一、經(jīng)典的J2SE遠(yuǎn)程方案:RMI

    A、訪問和曝露RMI服務(wù)
    訪問RMI服務(wù),只需通過java.rmi.Naming查找一個(gè)RMI的URL地址即可。每次查找都將返回一個(gè)服務(wù)器端RMI服務(wù)實(shí)例的一個(gè)代理:和EJB不同,沒有組件池的概念。

    Spring環(huán)境中的設(shè)置
    在Spring的bean工廠或應(yīng)用上下文中,可以用RmiProxyFactoryBean類來定義RMI服務(wù)的客戶端代理。
    也可以借助RmiServiceExporter類曝露為RMI服務(wù),不過被曝露的bean組件必須遵循RMI服務(wù)的實(shí)現(xiàn)要求。
    為了避免讓客戶端直接針對(duì)RMI接口編程,RMI服務(wù)的實(shí)現(xiàn)類在實(shí)現(xiàn)RMI服務(wù)接口之外,也可以實(shí)現(xiàn)與RMI無關(guān)的業(yè)務(wù)接口(business interface)[同樣方法的業(yè)務(wù)接口]。這樣,客戶端只需要依賴普通的業(yè)務(wù)接口,不需要依賴RMI接口。
    壞處:必須時(shí)刻保持“業(yè)務(wù)接口”與“遠(yuǎn)程接口”之間的同步。

    B、用RMI調(diào)用器實(shí)現(xiàn)透明遠(yuǎn)程調(diào)用
    借助Java反射機(jī)制,通過RMI調(diào)用器(RMI invoker)發(fā)送方法調(diào)用。

    二、經(jīng)典的J2EE遠(yuǎn)程機(jī)制:EJB

    三、基于WSDL的web Services:JAX-RPC
    J2EE1.4版本最大的進(jìn)步就在于對(duì)web services的支持,其下的基礎(chǔ)規(guī)則是WSDL(Web Service Description Lanuage,web service描述語言)和SOAP(Simple Object Access Protocol,簡單對(duì)象訪問協(xié)議)。

    WSDL是一種XML格式,用于將網(wǎng)絡(luò)服務(wù)描述為一組對(duì)消息的端點(diǎn)操作,消息中包含面向文檔或者面向過程的信息。操作和消息都將被抽象地描述,并隨后被綁定到具體的網(wǎng)絡(luò)協(xié)議和消息格式,用于定義一個(gè)端點(diǎn)。彼此連接的具體端點(diǎn)就可以組合為抽象端點(diǎn)(服務(wù))。
    --WSDL就是對(duì)遠(yuǎn)程服務(wù)的平臺(tái)無關(guān)的描述。

    A、訪問web service
    每個(gè)基于WSDL的web service都由一個(gè)服務(wù)(service)構(gòu)成,其中定義了一個(gè)或者多個(gè)端口(port)。每個(gè)端口對(duì)應(yīng)服務(wù)器上的一個(gè)服務(wù)端點(diǎn)(service endpoint),一個(gè)由WSDL定義的web service中可以匯聚多個(gè)端點(diǎn)。這與經(jīng)典的遠(yuǎn)程服務(wù)(EJB)不同,后者不支持這樣的分隔。
    為了訪問一個(gè)服務(wù),JAX-RPC需要下列參數(shù):
    1、WSDL文檔的URL
    2、WSDL服務(wù)的命名空間URL
    3、WSDL服務(wù)的名稱
    JAX-RPC提供了三種訪問服務(wù)端點(diǎn)的途徑:
    1、靜態(tài)存根:--不推薦
    2、動(dòng)態(tài)代理:--一種通過Java接口訪問遠(yuǎn)程服務(wù)的有效途徑,并且是可配置的。
    3、動(dòng)態(tài)調(diào)用接口(DII):--提供了最大限度的解耦。

    B、Spring環(huán)境中的配置
    曝露一個(gè)JAX-RPC服務(wù)

    C、Servlet和EJB端點(diǎn)
    JAX-RPC規(guī)范描述了兩種服務(wù)端點(diǎn)的實(shí)現(xiàn):servlet端點(diǎn)(Servlet endpoint)模型和EJB端點(diǎn)(EJB endpoint)模型。

    四、輕量級(jí)遠(yuǎn)程方案:Hessian和Burlap

    RMI環(huán)境的配置相當(dāng)麻煩,并且使用的網(wǎng)絡(luò)端口常常被防火墻禁止?;赪SDL和SOAP的web service又很難以一種可移植的方式導(dǎo)出,并且由于它們的協(xié)議臃腫冗長,會(huì)浪費(fèi)大量的帶寬?;贖TTP的輕量級(jí)遠(yuǎn)程調(diào)用協(xié)議解決了上述兩個(gè)問題:它們可以在任何標(biāo)準(zhǔn)的servlet容器之上運(yùn)行,并且可以穿越任何防火墻。
    1、訪問和曝露Hessian和Burlap服務(wù)
    2、在Spring環(huán)境中的配置
    --JPetStore展示Spring環(huán)境中使用Hessian和Burlap、RMI和JAX-RPC(借助Apache Axis)來曝露遠(yuǎn)程服務(wù),同時(shí)提供遠(yuǎn)程服務(wù)客戶端的示例。

    Replacing Other EJB Services -- 替換其他的EJB服務(wù)

    1、持久化
    2、遠(yuǎn)程調(diào)用機(jī)制
    3、CMT
    4、線程管理
    5、SLSB實(shí)例池
    6、聲明性、基于角色的安全性

    posts - 10, comments - 2, trackbacks - 0, articles - 0

    Copyright © JDeodar

    主站蜘蛛池模板: 久久久久亚洲AV无码专区网站| 日韩成人精品日本亚洲| 亚洲精品成人在线| 日韩版码免费福利视频| 花蝴蝶免费视频在线观看高清版 | 猫咪免费人成网站在线观看入口| 亚洲日韩在线视频| 亚洲成A人片在线观看无码不卡 | 亚洲人成免费电影| 亚洲国产综合精品中文第一区| 亚洲国产精品碰碰| 日本一线a视频免费观看| 青青草a免费线观a| 久久久久av无码免费网| 久久久高清日本道免费观看| 一区二区三区免费电影| 色费女人18女人毛片免费视频| 91在线亚洲综合在线| youjizz亚洲| 亚洲福利电影在线观看| 精品亚洲麻豆1区2区3区| 亚洲AV日韩AV天堂久久| 亚洲毛片在线观看| 亚洲最大的成网4438| 久久久无码精品亚洲日韩蜜臀浪潮 | 亚洲精品自在在线观看| 在线A亚洲老鸭窝天堂| 国产亚洲色婷婷久久99精品91| 亚洲成年人啊啊aa在线观看| 亚洲 国产 图片| 免费在线黄色网址| 亚洲精品视频在线观看你懂的| 亚洲成人影院在线观看| 国产精品亚洲w码日韩中文| 久久久久久A亚洲欧洲AV冫| 亚洲午夜福利717| 亚洲AV日韩AV鸥美在线观看| 亚洲国产天堂在线观看| 亚洲校园春色小说| 在线精品亚洲一区二区| 自拍偷自拍亚洲精品偷一|