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

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

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

    posts - 66,  comments - 11,  trackbacks - 0
        Web服務(wù)是構(gòu)建B2B應(yīng)用最為重要的利器之一,使用它能夠構(gòu)建、集成大型的系統(tǒng)。這一切都是通過發(fā)送XML消息給已定義的模塊化接口完成的。借助于無狀態(tài)會(huì)話Bean能夠構(gòu)建Web服務(wù)。為實(shí)現(xiàn)Java客戶對Web服務(wù)的訪問,需要使用到JAX-RPC.Web服務(wù)是構(gòu)建SOA的一種方式。SOA是架構(gòu)方法,它能夠?qū)⒏鞣N異構(gòu)應(yīng)用集成起來,并組成更大的分布式應(yīng)用,最后通過服務(wù)接口的形式將整個(gè)應(yīng)用支撐起來。
        服務(wù)提供者創(chuàng)建抽象服務(wù)定義,并將它發(fā)布到服務(wù)注冊器中。對于WEB服務(wù)而言,服務(wù)定義是通過WSDL文件給出的;服務(wù)注冊器需要遵循UDDI標(biāo)準(zhǔn)。服務(wù)請求者可以使用一套查詢機(jī)制從服務(wù)注冊器中查找到WSDL文件,如果找到合適的服務(wù)定義,請求者將綁定到服務(wù)提供者上。
        服務(wù)接口類似于對象或EJB接口。但是對于WEB服務(wù)而言,服務(wù)接口更為靈活。比如服務(wù)實(shí)現(xiàn)和客戶處于松耦合的關(guān)系,而這在其他EJB應(yīng)用或分布式應(yīng)用中是實(shí)現(xiàn)不了的。這種松耦合使得客戶和服務(wù)實(shí)現(xiàn)能夠運(yùn)行在不同平臺(tái)上,比如Microsoft.NET客戶能夠訪問到J2EE應(yīng)用服務(wù)器中所運(yùn)行的服務(wù)。另外,相比Java對象而言,Web服務(wù)實(shí)體的粒度更粗。
        通過標(biāo)準(zhǔn)化接口,能夠加強(qiáng)SOA的模塊化;通過松耦合,能夠提高SOA的靈活性;通過XML,能夠增強(qiáng)SOA擴(kuò)展性。在B2B場合,這些都是很重要的因素。WEB服務(wù)能夠在那些使用了多種異構(gòu)平臺(tái)的企業(yè)應(yīng)用中大顯身手。所有的WEB服務(wù)都是構(gòu)建在XML和Internet協(xié)議上的。EJB只能夠采用Java開發(fā)。如果使用其他語言開發(fā)應(yīng)用,互操作如何實(shí)現(xiàn)?
        組成WEB服務(wù)的事實(shí)標(biāo)準(zhǔn)可以通過如下等式表達(dá):
        Web服務(wù) = WSDL+SOAP+UDDI

    1、WSDL語言比Java更抽象、廣度更大。HelloWorldWSDL中存在<service>標(biāo)簽,它能夠在具體地址提供若干<port>.<port>代表了服務(wù)接口及對具體協(xié)議的綁定。
    2、服務(wù)描述包含了Endpoint地址。WSDL是由Java接口和對象引用構(gòu)成的。換句話說,Web服務(wù)不存在真正的實(shí)體,它們不是對象,因此必須將它們按照模塊化對待。
    3、根據(jù)輸入、輸出定義操作。開發(fā)者需要將輸入、輸出消息表示為XML元素。
    4、采用的綁定是SOAP綁定。到目前為止,只能采用SOAP綁定。也請注意,<soap:binding>標(biāo)簽還存在style="rpc"屬性,因此可以看出style還存在其他取值,目前,用于交換SOAP消息的另一種風(fēng)格是文檔風(fēng)格(document-style)。文檔風(fēng)格意味著在SOAP消息體中不在包含對具體操作的描述。

        SOAP協(xié)議為Web服務(wù)和它們的客戶定義了XML消息格式。SOAP消息格式非常簡單。它實(shí)際包含兩部分內(nèi)容:其一,HTTP POST請求頭信息。其二,XML文檔,這就是SOAP信封(Envelope)。另外,通過上述兩分SOAP消息,我們還想表達(dá)Web服務(wù)中的另一個(gè)重要概念。從SOAP協(xié)議的使用過程來看,它非常輕量,因?yàn)樗鼘μ幱诮换ブ械目蛻艉头?wù)沒有任何限制。但是,從SOAP協(xié)議的大小、性能角度考慮,它并不輕量。如果不壓縮SOAP消息,則需要在網(wǎng)絡(luò)上傳遞大量的SOAP數(shù)據(jù)消息。因此,采用二進(jìn)制更為明智,比如CORAB的IIOP協(xié)議。對于含有大量的SOAP數(shù)據(jù)消息進(jìn)行壓包和解包操作將耗費(fèi)大量的CPU時(shí)間。請不要忘記,WEB服務(wù)的誕生背景,它只是為集成應(yīng)用而來的,而不是替換現(xiàn)有的高性能中間件平臺(tái)技術(shù)。否則,就不需要使用web服務(wù)了。

        XML文檔和平臺(tái)無關(guān)性,借助于標(biāo)準(zhǔn)化的XML文檔,WEB服務(wù)能夠幫助集成異構(gòu)的分布式系統(tǒng)。在實(shí)際應(yīng)用開發(fā)過程中,它具有許多優(yōu)勢,比如松耦合、平臺(tái)無關(guān)性、遵循XML方面的標(biāo)準(zhǔn)、能夠合并不同的XML技術(shù)等。借助于XML能夠?qū)崿F(xiàn)應(yīng)用和中間件平臺(tái)的松耦合,這是很重要的優(yōu)勢。
        比如在開發(fā)EJB組件時(shí),客戶和服務(wù)器端同事需要使用組件接口。一旦組件接口發(fā)生變動(dòng),比如需要往方法簽名中新增參數(shù),則EJB組件本身需要重新構(gòu)建、集成、部署。當(dāng)然,客戶也逃脫不了重新編譯的命運(yùn)。因此,它們之間并沒有實(shí)現(xiàn)松耦合,開發(fā)者不能獨(dú)立的開發(fā)應(yīng)用組件。否則,一旦某些組件發(fā)生變動(dòng),應(yīng)用的其他部分也需要變動(dòng)。我們都希望應(yīng)用具有良好的擴(kuò)展性。對基于IIOP的請求消息而言,所有的參與者必須使用相同的類型信息,否則不能夠正確對消息進(jìn)行解包操作。而且,在IIOP技術(shù)領(lǐng)域中,應(yīng)用必須能夠理解消息的所有內(nèi)容。如果基于XML和XML消息開發(fā)應(yīng)用,則這些限制將不復(fù)存在。
       
        J2EE平臺(tái)技術(shù)對WEB服務(wù)提供了一流的支持能力。無論WEB服務(wù)實(shí)現(xiàn),還是WEB服務(wù)客戶,都可以使用JAVA語言開發(fā)完成。在J2EE中,使用WEB服務(wù)同RMI、RMI-IIOP并沒有多大區(qū)別。他們都將具體傳輸層屏蔽掉,使得開發(fā)者能夠?qū)W⒂跇I(yè)務(wù)邏輯。
        JSR921規(guī)范,即實(shí)現(xiàn)企業(yè)WEB服務(wù),定義了WEB服務(wù)編程模型。它使用術(shù)語port組件,描述web服務(wù)的服務(wù)器端視圖。它是服務(wù)接口的java實(shí)現(xiàn)。而且,它遵循服務(wù)接口到Java的映射,并提供了相應(yīng)的Java實(shí)現(xiàn)。需要將它部署并運(yùn)行在容器中。使用EJB開發(fā)WEB服務(wù)需要?jiǎng)?chuàng)建若干port組件。其中,還需要提供若干XML部署描述符。當(dāng)然,直接基于EJB實(shí)現(xiàn)WEB服務(wù)是J2EE平臺(tái)中實(shí)現(xiàn)WEB服務(wù)的最大優(yōu)勢。

        JAX-RPC服務(wù)端點(diǎn)接口,現(xiàn)在,來開發(fā)另一遠(yuǎn)程接口,它將企業(yè)Bean所提供的業(yè)務(wù)方法都列舉出來,我們稱之為服務(wù)Endpoint接口(Service Endpoint Interface,SEI),下面給出了代碼。
       

    package com.testproject.ejb.web;

    /*
     * Hello服務(wù)Endpoint接口
     * 需要注意的是,這里使用的是EJB2.1無狀態(tài)會(huì)話Bean,它作為WEB服務(wù)端點(diǎn)時(shí)可以不提供Home接口和Remote
     * Locale接口,它提供的是web服務(wù)端點(diǎn)接口,這個(gè)接口擴(kuò)展了Remote接口。
     
    */

    public interface HelloInterface extends java.rmi.Remote {
        
    public String hello()throws java.rmi.RemoteException;
    }

     

        JAX-RPC要求WEB服務(wù)提供SEI,EJB容器同WEB服務(wù)交互時(shí)需要使用它。JAX-RPC規(guī)范要求SEI遵循如下規(guī)則:
    1、接口必須間接或直接繼承java.rmi.Remote.
    2、所有的方法必須拋出java.rmi.RemoteException.
    3、方法參數(shù)和返回類型必須是JAX-RPC支持的JAVA類型。
    4、SEI中不能包含敞亮。

        在J2EE1.4平臺(tái)中,可以對EJB技術(shù)進(jìn)行了升級(jí),使得無狀態(tài)會(huì)話Bean可以直接部署為Web服務(wù)端點(diǎn)。這樣,在J2ee1.4平臺(tái)下,開發(fā)Web服務(wù)將更加簡單。這樣,EJB2.1中的無狀態(tài)會(huì)話Bean可以有3種不同的客戶端:本地接口的客戶端、遠(yuǎn)程接口的客戶端和web服務(wù)客戶端。EJB的WEB服務(wù)客戶端視圖通過WSDL文檔描述。
        待續(xù)......

     


     


        

       
    posted on 2009-11-09 10:22 王永慶 閱讀(171) 評(píng)論(0)  編輯  收藏 所屬分類: EJB學(xué)習(xí)筆記
    <2009年11月>
    25262728293031
    1234567
    891011121314
    15161718192021
    22232425262728
    293012345

    常用鏈接

    留言簿(1)

    隨筆分類

    隨筆檔案

    關(guān)注blogs

    搜索

    •  

    最新評(píng)論

    • 1.?re: 心中的那個(gè)她[未登錄]
    • 如果心情能那么容易放開就好了,碰到她是我的緣分,但是她的緣分不知道在哪里。
    • --王永慶
    • 2.?re: 心中的那個(gè)她[未登錄]
    • 兄弟,喜歡就大膽去追好了,就是因?yàn)橄矚g才會(huì)有不愉快,如果想一輩子沒有這些煩惱,找一個(gè)可有可無的人就好了。這種事講的是緣分吧。別人對你好不好其實(shí)不太重要。放開心情就好了。
    • --萍水相逢
    • 3.?re: 心中的那個(gè)她
    • 只能同甘不能共苦,就他媽算了吧,程序員也是人?。∥椰F(xiàn)在也很討厭女的不理解人情。
    • --咖啡妝
    • 4.?re: 難以割舍的那份情感
    • 評(píng)論內(nèi)容較長,點(diǎn)擊標(biāo)題查看
    • --王永慶
    • 5.?re: 難以割舍的那份情感
    • 評(píng)論內(nèi)容較長,點(diǎn)擊標(biāo)題查看
    • --隔葉黃鶯

    閱讀排行榜

    評(píng)論排行榜

    主站蜘蛛池模板: 日韩在线视频免费| 亚洲AV无码AV男人的天堂| 两个人的视频高清在线观看免费| 久久免费视频网站| 曰批全过程免费视频在线观看无码 | 久久这里只精品99re免费| a毛片成人免费全部播放| 永久免费无码日韩视频| 日本免费精品一区二区三区 | 无码专区—VA亚洲V天堂| 亚洲国产精品福利片在线观看 | 18禁无遮挡无码网站免费| 女人18毛片水真多免费看| 成人黄软件网18免费下载成人黄18免费视频| 国产成人精品免费视| 国产精品久久久久久久久免费| 国产成人精品久久免费动漫| 4399好看日本在线电影免费| 国产精品久久久久久久久久免费 | 国产乱子伦精品免费视频| 日本高清不卡中文字幕免费| sss日本免费完整版在线观看| 国产VA免费精品高清在线| a毛片免费全部播放完整成| 免费在线看黄网站| 久久精品无码专区免费青青| 无码乱肉视频免费大全合集| 成人午夜视频免费| 亚洲阿v天堂在线2017免费| 亚洲中文字幕无码一区| 亚洲第一精品在线视频| 亚洲一级毛片在线观| 亚洲国产成人精品无码区花野真一| 国产精品亚洲一区二区三区久久 | 亚洲伊人久久大香线焦| 亚洲人成未满十八禁网站| 人碰人碰人成人免费视频| 在线观看片免费人成视频无码| 99久久99这里只有免费费精品| 在线播放免费播放av片| 狠狠色婷婷狠狠狠亚洲综合|