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

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

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

    積累,創(chuàng)造,分享!

    BlogJava 首頁 新隨筆 聯(lián)系 聚合 管理
      25 Posts :: 13 Stories :: 26 Comments :: 0 Trackbacks
    waf是petstore中自帶的web tier的MVC框架,雖然比起struts等框架,功能要略顯簡單,而且也顯得過于冗余,但畢竟是一種很好的web層框架解決方案,還是值得我們研究一下的。
    我是從源碼上入手的,可能會(huì)存在一些解釋錯(cuò)誤的地方,希望大家諒解!

    waf包括在petstore(學(xué)習(xí)EJB的經(jīng)典實(shí)例)中,我是從sun download的,最新版本是1.3.2,在其自帶的doc里面有安裝說明。在提供的源代碼中包括了waf framework,我是把它放入jbuilder工程中進(jìn)行研究。

    Waf framework實(shí)際包括倆部分,web tier和EJB tier,WebController作為這倆層之間訪問的proxy。Event(事件)作為這倆層交互時(shí)傳遞的對象,根據(jù)實(shí)際要求可以定義不同的事件對象,而作為EJB層也會(huì)提供對這些事件處理的業(yè)務(wù)方法。
    waf包括一個(gè)mappings.xml的文件用于定義事件映射和url映射。

    web tier:
    在web tier包括一個(gè)Control(MainServlet),用于接收客戶端請求;一些繼承自HtmlAction的action處理類(Model部分),這個(gè)和struts里面是一樣的,這些action處理類用于處理不同的客戶端請求,用戶請求的url和action之間的映射在mappings.xml中定義。
    action包括3個(gè)處理方法,doStart()、perform()、doEnd(),在perform()方法中,action除了進(jìn)行一些web層的處理外還要決定觸發(fā)哪個(gè)Event事件(即觸發(fā)商業(yè)層的什么操作),Control會(huì)根據(jù)action的返回事件通過proxy對象WebController對EJB tier進(jìn)行調(diào)用。

    EJB tier:
    和web tier一樣EJB tier也是MVC結(jié)構(gòu)的,包括Control(EJBControllerLocalEJB,一個(gè)local接口的會(huì)話bean)和Model(繼承自EJBAction的action類)。每一個(gè)action類負(fù)責(zé)處理一個(gè)或多個(gè)事件Event,這個(gè)也是在mappings.xml中進(jìn)行定義。在action當(dāng)中會(huì)調(diào)用業(yè)務(wù)邏輯層的EJB(通常是一些facsade EJB)進(jìn)行實(shí)際業(yè)務(wù)處理。
    waf為了保證一個(gè)client端所進(jìn)行的所有業(yè)務(wù)處理可以是相關(guān)聯(lián)的,即允許保存各業(yè)務(wù)處理狀態(tài),還提供了狀態(tài)機(jī)StateMachine,用于保存業(yè)務(wù)操作時(shí)的處理狀態(tài)。

    mappings.xm:
    事件映射,用于EJB tier的處理:
    <event-mapping>
            <event-class>com.sun.j2ee.blueprints.waf.event.events.ChangeLocaleEvent</event-class>
            <ejb-action-class>com.sun.j2ee.blueprints.waf.controller.ejb.action.actions.ChangeLocaleEJBAction</ejb-action-class>
    </event-mapping>

    url映射,用于web tier的處理:
    <url-mapping url="changelocale.do" screen="locale_change_success.screen" >
            <web-action-class>com.sun.j2ee.blueprints.waf.controller.web.action.actions.ChangeLocaleHTMLAction</web-action-class>
    </url-mapping>

    waf的處理過程如下:
    1.客戶端訪問系統(tǒng)。
    2.在web.xml中定義的listener(servlet技術(shù),默認(rèn)為DefaultComponentManager)被激活,為當(dāng)前客戶端做初始化工作,包括創(chuàng)建EJB tier的代理對象WebController以及EJB tier的Control(EJBControllerLocalEJB,還包括當(dāng)前記錄當(dāng)前客戶端狀態(tài)的StateMachine。
    3.客戶端發(fā)出xxx.do的請求。
    4.web tier的Control(MainServlet)截獲這個(gè)請求,這個(gè)在web.xml中進(jìn)行定義。
    5.MainServlet調(diào)用request處理類RequestProcessor進(jìn)行本次業(yè)務(wù)請求處理。
    6.RequestProcessor會(huì)到mappings.xml文件中讀取這個(gè)請求對應(yīng)的action,然后依次調(diào)用action的doStart()、perform()、doEnd()方法。
    7.action根據(jù)用戶的request來決定產(chǎn)生什么處理事件Event。
    8.RequestProcessor將這個(gè)事件Event通過代理類WebController傳遞到EJB tier。
    9.EJB tier的控制器EJBControllerLocalEJB捕獲到這個(gè)事件后首先到mappings.xml中檢索哪個(gè)EJBAction負(fù)責(zé)處理這個(gè)事件。
    10.EJBControllerLocalEJB調(diào)用僅屬于當(dāng)前客戶端的StateMachine負(fù)責(zé)處理本次操作。
    11.StateMachine依次調(diào)用EJBAction的doStart()、perform()、doEnd()方法。
    12.EJBAction的perform()除了調(diào)用業(yè)務(wù)邏輯層的EJB對象的業(yè)務(wù)方法,比如一些使用了facasde模式的會(huì)話bean,還可以將業(yè)務(wù)處理結(jié)果存放到和一些狀態(tài)值存放到僅屬于當(dāng)前客戶端的StateMachine當(dāng)中。
    至此整個(gè)處理過程完成。

    從waf的源碼來看注釋顯得并不是很完善,因此對于理解帶來了一些困難。雖然我們不一定是要使用它,但了解一下它的架構(gòu)思想還是很有必要的。waf中采用的事件機(jī)制和struts顯然有所不同。




    該帖由 sunyn 在 Jan 25, 2005 9:06 AM 編輯過

     

    posted on 2005-08-11 11:20 nighthawk 閱讀(849) 評論(0)  編輯  收藏 所屬分類: 分析與設(shè)計(jì)
    主站蜘蛛池模板: 亚洲国产综合精品中文第一区| 97超高清在线观看免费视频| 亚洲综合自拍成人| 四只虎免费永久观看| 青青青国产在线观看免费| 国产免费一区二区三区不卡| 色一情一乱一伦一视频免费看| 亚洲ts人妖网站| 亚洲网址在线观看| 久久青青草原亚洲AV无码麻豆 | 亚洲国产一区在线观看| 久久精品国产亚洲沈樵| AV在线亚洲男人的天堂| 免费A级毛片无码久久版| 免费看的成人yellow视频| 免费A级毛片无码无遮挡内射| 最近在线2018视频免费观看| 免费国产叼嘿视频大全网站| 久久久精品视频免费观看| 丰满少妇作爱视频免费观看| 色屁屁www影院免费观看视频| 蜜臀亚洲AV无码精品国产午夜.| 亚洲欧美日韩一区二区三区| 亚洲一区二区三区在线网站| 亚洲人成综合在线播放| 亚洲一区二区三区免费在线观看| 亚洲欧洲自拍拍偷综合| 亚洲明星合成图综合区在线| 91亚洲国产成人精品下载| 99人中文字幕亚洲区| 久久亚洲春色中文字幕久久久| 亚洲嫩模在线观看| 337p日本欧洲亚洲大胆色噜噜| 亚洲伊人tv综合网色| 亚洲男人电影天堂| 亚洲国产理论片在线播放| 亚洲精品福利你懂| 亚洲日韩精品无码专区加勒比 | 91禁漫免费进入| 久久久久久精品免费看SSS| 四虎永久在线观看免费网站网址|