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

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

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

    月蝕傳說

    浮躁讓人失去理智
    posts - 25, comments - 101, trackbacks - 0, articles - 0
      BlogJava :: 首頁 ::  :: 聯系 :: 聚合  :: 管理
    1.簡介

    Entry Point是SCA中模塊的“入口”。模塊可以通過Entry Point將自身定義好的組件(Component)發(fā)布成一個可供外部遠程訪問的服務,這所謂的“遠程服務”都是通過一些標準的協議進行訪問的,最常見的就是Web服務,所以我們可以這樣去理解Entry Point:

    Entry Point是將SCA組件發(fā)布成各種可供標準遠程技術所訪問模型,這里的遠程訪問技術可以是Web Service,JMS或者EJB等。

    在這篇文章中,我將介紹如何使用Balto SCA容器,利用Entry Point來將已有的組件發(fā)布成一個可用Web服務。對SCA中組件的概念不明白的讀者可以先看看SCA程序設計系列的第一篇《本地服務》,或者可以看一下《淺談SCA》,都能幫助你理解一些SCA基本的概念。

    2.如果定義Entry Point

    Entry Point的定義是寫在sca.module文件中的,它的XML格式如下:

    < entryPoint? name ="xs:NCName" ?multiplicity ="0..1?or?1..1?or?0..n?or?1..n" ? > *
    ???? < interface .interface-type />

    ??? ?< binding .binding-type?uri ="xs:anyURI" /> +
    ???? < reference > wire-target-URI </ reference >

    </ entryPoint >

    下面簡單介紹一下Entry Point的XML文章中各個元素以及屬性的含義:

    首先是entryPoint的屬性name,這個屬性是表示的是該Entry Point的名稱

    interface元素是指entryPoint對應的接口。(讀者可以看一下《本地服務》,了解更多interface的信息)

    binding元素表示entryPoint在發(fā)布該遠程服務,采用的什么樣的遠程協議進行綁定的。通常情況下都使用的是WebService Binding,除此之外,還有Ejb,JMS的Binding。

    reference元素是指該Entry Point將哪個組件做為遠程服務發(fā)布的實際調用對象。或者我們理解為:將哪個組件做為遠程服務發(fā)布了出去

    在這一篇文章中我們只討論基于Web服務的綁定方式,所以整篇文章中所提到的Binding,都是WebService Binding。

    組件通過Entry Point發(fā)布出去后,外部就可以通過Entry Point所設置的Binding的具體網絡協議對該組件進行訪問。也就是說,如果我們想要使本地的一些Java類發(fā)布成一個Web Service,那在SCA容器中,只需要將這個Java類做成組件,然后再發(fā)布成Web服務綁定的Entry Point;同樣我們還可以把它發(fā)布成EJB的形式。更重要的是,如果我們在Entry Point中,指定了多種Binding方式,那該組件服務就可以通過多種遠程協議進行訪問。

    3.示例

    為了證明Entry Point的確能夠幫助開發(fā)人員簡單地發(fā)布Web 服務,這里我們來一個示例工程。
    示例工程代碼下載

    準備工作:
    下載WTP 1.0 下載Balto SCA

    首先我們將下載好的Balto SCA容器釋放到某處,然后在WTP的首選項中,找到Server項,然后添加一個Tomcat 5.5 Runtime,路徑指向剛才釋放的Balto SCA的地方:

    install_balto.JPG


    小貼士:在上一篇文章《ExternalService應用》中我已經提到了,Balto?SCA是整合了Tomcat,Balto本身就是一個Tomcat容器,只是修改了Tomcat的一些信息,能對部署的Web應用進行SCA方面的一些管理,所以使用Balto?SCA就像使用Tomcat一樣。


    在WTP中新建一個動態(tài)Web工程,取名為balto_entrypoint_test

    new_wtp_pro.JPG



    然后我們建立一個接口Cat

    @Remotable
    public ? interface
    ?Cat?{
    ????
    int
    ?getAge();
    ????
    ????
    float
    ?getWeight();
    ????
    ????String?getName();
    ????
    ????AppearanceTypeImpl?getAppearance();
    ????
    ????String?callingIt(String?name);
    }

    注意,該接口我們利用了SCA的Remotable標簽進行標識,這是因為Balto?容器中,對Entry?Point所指定的組件接口是有一定要求的,該要求就是要這個組件是一個遠程的,所以這里我們需要構建一個Remotable的組件接口

    接下來我們做一個類MyCat,實現Cat接口,并且指明該MyCat是一個組件,而服務則接口則是Cat接口,也就是在MyCat類上標明@Service 標簽(不明白的讀者可以看SCA程序設計第一篇文章 《本地服務》

    @Service(Cat. class )
    public ? class ?MyCat? implements
    ?Cat?{

    ????
    public ? int
    ?getAge()?{
    ????????
    return ? 1
    ;
    ????}

    ????
    public ? float
    ?getWeight()?{
    ????????
    return ? 10.89f
    ;
    ????}

    ????
    public
    ?String?getName()?{
    ????????
    return ? " DuoDuo "
    ;
    ????}

    ????
    public
    ?AppearanceTypeImpl?getAppearance()?{
    ????????AppearanceType?app?
    =
    ?AppearanceFactory.eINSTANCE.createAppearanceType();
    ????????
    ????????EyesType?eyes?
    =
    ?AppearanceFactory.eINSTANCE.createEyesType();
    ????????
    ????????CoatType?coat?
    =
    ?AppearanceFactory.eINSTANCE.createCoatType();
    ????????
    ????????eyes.setColor(
    " Deep?Blue "
    );
    ????????
    ????????coat.setColor(
    " White "
    );
    ????????coat.setHeight(
    " Height "
    );
    ????????
    ????????app.setCoat(coat);
    ????????app.setEyes(eyes);
    ????????
    return
    ?(AppearanceTypeImpl)app;
    ????}

    ????
    public
    ?String?callingIt(String?name)?{
    ????????
    return ? " Hello? " ? + ?name? + ? " ?,?MIAO~~~ "
    ;
    ????}

    }

    好了,上面的創(chuàng)建好的Cat接口以及MyCat實現類,已經為我們的整個SCA模塊生成了一個可用的Component了。

    Balto在解析Java Annotation的時候,如果發(fā)現了@Service標簽,就會主動將這個類注冊成為一個Component,并且,該Component的名字是它對應的服務接口的名字,這里也就是Cat。

    接下來就是要將這個Component接到Entry Point上,并通過Web服務發(fā)布出去。

    在工程的src下新建一個sca.module文件(必須在src下),我們在文件中寫入:

    <? xml?version="1.0"?encoding="ASCII" ?>
    < module? xmlns ="http://www.osoa.org/xmlns/sca/0.9"
    ????xmlns:v
    ="http://www.osoa.org/xmlns/sca/values/0.9"
    ????name
    ="balto_entryPoint_test" >
    ????
    < entryPoint? name ="Cat" >
    ????????
    < interface .java?interface ="org.uxteam.balto.test.Cat" ? />
    ????????
    < binding .ws
    ????????????port
    ="http://localhost:8080/balto_entrypoint_test/sca/services/LookingCat?
    ????????????????? wsdl#wsdl.endpoint(LookingCatService/LookingCatServiceSOAPBinding)"
    ? />

    ????????
    < reference > Cat </ reference >
    ????
    </ entryPoint >
    </ module >

    這個就是我們所定義的Entry Point

    Web服務名 : Cat
    interface:java接口,接口類是Cat接口
    binding :Web服務綁定,但后面port給出的信息在目前的Balto版本中是不會關心的。
    reference:指定了我們剛才建立的Cat組件。

    現在我們打開WTP的Server視圖:

    new_server.JPG

    新建一個Server,Runtime就是我們的Balto,然后再將剛做的balto_entrypoint_test工程加入到server中,啟動!

    我們會發(fā)現在控制臺打出了一些信息,如果沒有發(fā)生異常,Balto SCA容器就算是啟動成功了:

    balto_entrypoint_console.JPG

    測試Web服務

    我們現在需要測試一下發(fā)布出去的Web服務是否能用。

    首先,打開WTP的Web服務測試Web頁面:

    web_service_explorer.JPG



    然后選擇WSDL Page項,我們會發(fā)現一下的一個界面,在文本中輸入:

    http://localhost:8080/balto_entrypoint_test/sca/services/Cat?wsdl

    小貼士:Balto容器在處理Web服務使用的是Axis2,也就是說純粹的是通過Axis2的Servlet來處理Web服務請求的,所以,Balto在Web應用啟動的階段,為這些輸入SCA管理范圍內的Web應用,動態(tài)加入了Axis2,而由于目前Balto并不完善,所以在處理Servlet-Mapping的時候,都默認給出了“/sca/services”做為Web服務映射的URL。從上面這段URL可以看出,這是一個請求WSDL文檔的URL。


    點擊GO后我們發(fā)現在頁面左側出現了一個樹形結構的東西。點開它,呵呵,看見了沒,我們發(fā)布的Web服務方法全在這兒呢。

    cat_ws.JPG

    隨便選擇一個,然后在右側輸入參數后點擊GO。成功后在Status中我們可以點開Source,查看一下返回的SOAP相信信息。我們拿callIt做個例子:

    return_source.JPG

    信息準確無誤,成功了。

    4.小結

    我們這里所提到的Entry Point是在SCA 0.9規(guī)范中給出了,而在0.9版本后,Entry Point已經改名了.

    通過Entry Point這種"暴露服務"方式,開發(fā)人員能夠很容易地將自己的Component注冊成為一個遠程可用的服務,這正是SOA中所提出的那樣:服務是可運行在獨立節(jié)點上的,利用規(guī)范的接口描述,讓消費者能夠在任何地方訪問到.SCA中所提出的Entry Point其實就是一個獨立服務的訪問入口,所以在SCA規(guī)范的0.9版本以后Entry Point這個名詞就沒有再沿用,而是支持將它改為了Service,這更能準確地表明它的性質吧.

    本文中并沒有具體講解如何使用XSD中的復雜類型來作為Web服務中的類型,但示例工程中是有的,有興趣的朋友可以看一看.

    本人文筆有限,有什么不對的地方還請大家指出,謝謝收看,再見。


    評論

    # re: SCA程序設計——Entry Point : 讓Web服務發(fā)布簡單起來  回復  更多評論   

    2006-12-01 11:15 by 壞男孩
    寫的太詳細了,,,

    # re: SCA程序設計——Entry Point : 讓Web服務發(fā)布簡單起來  回復  更多評論   

    2007-01-16 20:35 by teamlet
    SCA 規(guī)范 0.95已經把Entry Point,Moduel換掉改稱為Service,Composite

    # re: SCA程序設計——Entry Point : 讓Web服務發(fā)布簡單起來  回復  更多評論   

    2007-06-19 16:01 by wsalvin
    OSOA已發(fā)布 SCA 1.0版 2007-03-15

    # re: SCA程序設計——Entry Point : 讓Web服務發(fā)布簡單起來  回復  更多評論   

    2007-09-03 21:02 by jackyrong
    由于本人公司里存在不少遺留系統(tǒng),有用java,php,asp,asp.net的四類系統(tǒng),而且還有不少和合作伙伴的接口程序(之前都是用HTTP來交換數據的),現在而且本人的碩士畢業(yè)
    論文設計也是做SOA方面的,但目前遇到了一個難題,那就是到底SOA應該如何從開始進行架構設計,如何提煉業(yè)務,并且如何將SOA的思想應用到公司的實際系統(tǒng)中,我目前只整理了一下,感覺可以用到SCA/SDO/BPEL/ESB這些東西,ESB打算用MULE的開源,
    SCA/SDO打算用APACHE的TUSCANY,但不知道有什么好的架構設計的方法呢?
    主站蜘蛛池模板: 一区二区三区在线免费看 | 国产亚洲精品a在线观看 | 亚洲国产精品久久网午夜 | 亚洲AV无码专区在线观看成人| 国产精品免费观看| 亚洲伊人久久大香线蕉在观| 18pao国产成视频永久免费| 亚洲精品自产拍在线观看动漫| 无码精品人妻一区二区三区免费看| 亚洲熟妇无码另类久久久| 国产精品1024在线永久免费 | 丁香亚洲综合五月天婷婷| 男男gvh肉在线观看免费| 亚洲AV日韩精品一区二区三区| 爱情岛论坛免费视频| 亚洲国产成人久久综合区| 一个人看的在线免费视频| 亚洲老妈激情一区二区三区| 国精产品一区一区三区免费视频| 亚洲AV永久纯肉无码精品动漫| 久久午夜伦鲁片免费无码| 亚洲一区二区久久| 国产精品免费视频播放器| 一个人看的www视频免费在线观看| 亚洲永久精品ww47| 久久久久久毛片免费播放| 亚洲H在线播放在线观看H| 国产中文字幕免费观看| 国产精品成人免费观看| 亚洲综合综合在线| 日本特黄a级高清免费大片| 国产成人无码精品久久久免费| 亚洲国产人成在线观看69网站| 国产精品久久久久久久久久免费| 亚洲乱人伦中文字幕无码| 久久影院亚洲一区| 无码av免费毛片一区二区| 新最免费影视大全在线播放| 亚洲综合精品香蕉久久网97| 麻豆国产人免费人成免费视频| 久久久精品视频免费观看|