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

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

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

    hengheng123456789

      BlogJava :: 首頁 :: 聯(lián)系 :: 聚合  :: 管理
      297 Posts :: 68 Stories :: 144 Comments :: 0 Trackbacks
    Liferay 不再依賴于 EJB ,它完全可以單獨裝配到一個 servlet 容器(如: Tomcat,JBoss 等)中。而所有的業(yè)務(wù)邏輯都通過 Spring 管理的 POJO 來實現(xiàn)。這樣的實現(xiàn)利益于 Spring AOP IOC 特性。

    但在POJO的實現(xiàn)方法上Liferay的兩個版本有所不同,企業(yè)版(enterprise)中通過EJB從而為大站點提供了高擴展性各良好的事務(wù)支持能力(如集群),而專業(yè)版(professiona)直接通過輕量級的接口完成。

    所有的業(yè)務(wù)數(shù)據(jù)都通過Hibernate來實現(xiàn)并通過POJO來調(diào)用。Liferay曾經(jīng)使用CMP技術(shù).來實現(xiàn)持久層,但后來因速度及靈活性等原因改用Hibernate。在數(shù)據(jù)庫方面,Liferay也完全兼容大多數(shù)主流類型DB

    Liferay使用JAAS來完成用戶認證安全管理,好處是當一個用戶登錄后,它的安全屬性可以在ServletEJB層中沿用,真正作到系統(tǒng)級的SSO。具體講,遠程EJB可以沿用安全檢查及權(quán)限屬性,本地的EJB是為其它EJB提供業(yè)務(wù)邏輯服務(wù)的,不能被遠程調(diào)用所以也不必做此類檢查;安全原則也派生到POJO實現(xiàn)中,而這此實現(xiàn)其實是遠程EJB的基礎(chǔ)類。

    企業(yè)版式使用EJB,所以系統(tǒng)分別可以在WEB服務(wù)器、EJB服務(wù)器、數(shù)據(jù)庫服務(wù)器三層中實現(xiàn)集群。當然在n層的系統(tǒng)中,集群也保持優(yōu)勢,而且在每一層都并不強迫使用集群,這些都為大企業(yè)應(yīng)用提供了極好的彈性選擇權(quán)。

    系統(tǒng)中的EJBHBM、以及模式Model者是ant執(zhí)行build-ejb任務(wù)時,通過讀取目錄/portal-ejb下的ejb.xml文件,然后自動生成的。每個有持久層對象的門戶單元(portlet)都有自己的ejb.xml文件(可以在/portal-ejb下搜索得到清單)。當需要生成持久層的類時,就把文件復(fù)制到/portal-ejb下,這生成工具是建立在XDoclet之上的。

    例如:通過讀取Bookmarks門戶單元的ejb.xml文件配置后,自動生成下列的模式類。每個類對應(yīng)數(shù)據(jù)庫中的一個表。永遠不要手工修改BookmarksEntryModel類,而要通過修改BookmarksEntry,然后再更新BookmarksEntryModel內(nèi)容。這樣做的好處是減少了直接寫代碼的工作,而只做相應(yīng)的標記工作。
    com.liferay.portlet.bookmarks.model.BookmarksEntry
    com.liferay.portlet.bookmarks.model.BookmarksEntryModel
    com.liferay.portlet.bookmarks.model.BookmarksFolder
    com.liferay.portlet.bookmarks.model.BookmarksFolderModel

    Hibernate類是根據(jù)模式(model)類對應(yīng)生成的。這樣就可以在多層系統(tǒng)中允許模式類是可作序列化處理的,而Hibernate類則不必。
    com.liferay.portlet.bookmarks.ejb.BookmarksEntryHBM
    com.liferay.portlet.bookmarks.ejb.BookmarksFolderHBM

    持久層的方法如:add, update, delete, find, remove, 以及count,系統(tǒng)都默認自動生成。
    com.liferay.portlet.bookmarks.ejb.BookmarksEntryPersistence
    com.liferay.portlet.bookmarks.ejb.BookmarksFolderPersistence

    也生成了專門的協(xié)助類(Helper classes),可以用來調(diào)用持久層方法。默認時,協(xié)助類調(diào)用Hibernate的方法來對數(shù)據(jù)庫進行更新操作,但是也可以改寫portal.properties中的配置,使用自己專用的類來完成,但這種類要求要繼承默認的持久層類。換言之,用戶完全可以定制自己的持久層數(shù)據(jù),可以是一個正統(tǒng)的數(shù)據(jù)庫,或者是LDAP服務(wù)器,其它什么的。
    com.liferay.portlet.bookmarks.ejb.BookmarksEntryUtil
    com.liferay.portlet.bookmarks.ejb.BookmarksFolderUtil

    為了減少對象生成的成本,引入了對象池,可以通過修改portal.properties文件來控制池的基本動作。
    com.liferay.portlet.bookmarks.ejb.BookmarksEntryPool
    com.liferay.portlet.bookmarks.ejb.BookmarksFolderPool

    用來實現(xiàn)業(yè)務(wù)邏輯的POJO類,通過繼承PrincipalBean類,來實現(xiàn)有關(guān)調(diào)用者的方法,所以可以遠程調(diào)用。如:調(diào)用getUserId()可以得到當前用戶的ID;調(diào)用getUser()則返回當前用戶的對象。EJB再繼承這類POJO,實現(xiàn)遠程調(diào)用。

    例如:下面的類實現(xiàn)了,允許當且公當bookmark項目或目錄的生成者可以刪除它。這些對象只有在不存在時才可能被創(chuàng)建。

    協(xié)助類(Helper classes)是在POJO的實現(xiàn)基礎(chǔ)上生成的。它可以節(jié)約開發(fā)者的工作,不必書寫很多行的代碼,而只要簡單的找到合適的EJB wrapperPOJO實現(xiàn),通過調(diào)用BookmarksEntryManagerUtil.addEntry來間接調(diào)用相應(yīng)的BookmarksEntryManagerImpl.addEntry方法就可以了。

    BookmarksEntryManagerUtil通過調(diào)用BookmarksFolderManagerFactory來查找實現(xiàn)BookmarksEntryManager的類。也正是通過BookmarksFolderManagerFactory來識別Springportal.properties中的配置來決定要是載入EJB wrapper還是POJO實現(xiàn)。
    com.liferay.portlet.bookmarks.ejb.BookmarksEntryManager
    com.liferay.portlet.bookmarks.ejb.BookmarksEntryManagerEJB
    com.liferay.portlet.bookmarks.ejb.BookmarksEntryManagerEJBImpl
    com.liferay.portlet.bookmarks.ejb.BookmarksEntryManagerFactory
    com.liferay.portlet.bookmarks.ejb.BookmarksEntryManagerHome
    com.liferay.portlet.bookmarks.ejb.BookmarksEntryManagerUtil
    com.liferay.portlet.bookmarks.ejb.BookmarksFolderManager
    com.liferay.portlet.bookmarks.ejb.BookmarksFolderManagerEJB
    com.liferay.portlet.bookmarks.ejb.BookmarksFolderManagerEJBImpl
    com.liferay.portlet.bookmarks.ejb.BookmarksFolderManagerFactory
    com.liferay.portlet.bookmarks.ejb.BookmarksFolderManagerHome
    com.liferay.portlet.bookmarks.ejb.BookmarksFolderManagerUtil

    隧道類(Tunneling classes)是用來實現(xiàn)通過80端口來調(diào)用POJO的。
    com.liferay.portlet.bookmarks.ejb.BookmarksEntryManagerHttp
    com.liferay.portlet.bookmarks.ejb.BookmarksFolderManagerHttp

    Soap類也是用來實現(xiàn)通過80端口來調(diào)用POJO的。雖然與隧道類相比Soap類在速度上要差一點,原因是隧道類使用二進制數(shù)據(jù)流。但Soap類用靈活,可以適用各種客戶端(不局限于Java)。
    com.liferay.portlet.bookmarks.ejb.BookmarksEntryManagerSoap
    com.liferay.portlet.bookmarks.ejb.BookmarksFolderManagerSoap

    Soap類也是用來實現(xiàn)通過80端口來調(diào)用POJO的。雖然與隧道類相比Soap類在速度上要差一點,原因是隧道類使用二進制數(shù)據(jù)流。但Soap類用靈活,可以適用各種客戶端(不局限于Java)。這些類只有在檢驗到不存在時才會被創(chuàng)建。同時協(xié)助類也生成了。
    com.liferay.portlet.bookmarks.ejb.BookmarksEntryLocalManager
    com.liferay.portlet.bookmarks.ejb.BookmarksEntryLocalManagerEJB
    com.liferay.portlet.bookmarks.ejb.BookmarksEntryLocalManagerEJBImpl
    com.liferay.portlet.bookmarks.ejb.BookmarksEntryLocalManagerFactory
    com.liferay.portlet.bookmarks.ejb.BookmarksEntryLocalManagerHome
    com.liferay.portlet.bookmarks.ejb.BookmarksEntryLocalManagerUtil
    com.liferay.portlet.bookmarks.ejb.BookmarksFolderLocalManager
    com.liferay.portlet.bookmarks.ejb.BookmarksFolderLocalManagerEJB
    com.liferay.portlet.bookmarks.ejb.BookmarksFolderLocalManagerEJBImpl
    com.liferay.portlet.bookmarks.ejb.BookmarksFolderLocalManagerFactory
    com.liferay.portlet.bookmarks.ejb.BookmarksFolderLocalManagerHome
    com.liferay.portlet.bookmarks.ejb.BookmarksFolderLocalManagerUtil

    但總有一些用戶需要調(diào)用引種當?shù)仡悾谑峭耆鄬?yīng)的遠程類也應(yīng)用而生了。
    com.liferay.portlet.bookmarks.ejb.BookmarksEntryRemoteManager
    com.liferay.portlet.bookmarks.ejb.BookmarksEntryRemoteManagerEJB
    com.liferay.portlet.bookmarks.ejb.BookmarksEntryRemoteManagerEJBImpl
    com.liferay.portlet.bookmarks.ejb.BookmarksEntryRemoteManagerFactory
    com.liferay.portlet.bookmarks.ejb.BookmarksEntryRemoteManagerHome
    com.liferay.portlet.bookmarks.ejb.BookmarksEntryRemoteManagerUtil
    com.liferay.portlet.bookmarks.ejb.BookmarksFolderRemoteManager
    com.liferay.portlet.bookmarks.ejb.BookmarksFolderRemoteManagerEJB
    com.liferay.portlet.bookmarks.ejb.BookmarksFolderRemoteManagerEJBImpl
    com.liferay.portlet.bookmarks.ejb.BookmarksFolderRemoteManagerFactory
    com.liferay.portlet.bookmarks.ejb.BookmarksFolderRemoteManagerHome
    com.liferay.portlet.bookmarks.ejb.BookmarksFolderRemoteManagerUtil


    許多人避免使用EJB,因為它的重量級,需要大量的代碼工作。Liferay的自動生成腳本可以使得,既不損失EJB的優(yōu)點,而且還最小化重復(fù)的代碼等工作,從而你可以在努力與結(jié)果之間找到一個良好的平衡點。

    Spring也給Liferay帶來了更多的好處。開發(fā)者既可以利用專業(yè)版在一個servlet容器中測試POJO的實現(xiàn),也可以通過企業(yè)版在應(yīng)用服務(wù)器上裝載要上線的產(chǎn)品。


    posted on 2007-02-10 13:10 哼哼 閱讀(1196) 評論(1)  編輯  收藏 所屬分類: JAVA-Web

    Feedback

    # re: Liferay Portal 技術(shù)理解之 概述 2008-07-04 21:28 Beijing_M
    Hi ,好消息和大家分享:

    Liferay 大連的聯(lián)系方式:
    MSN: eonpeter@gmail.com
    大家可以和peter聯(lián)系,可以從他那得到足夠幫助  回復(fù)  更多評論
      

    主站蜘蛛池模板: 国产青草视频在线观看免费影院| 中国国产高清免费av片| 在线观看的免费网站无遮挡| 亚洲国产美女精品久久久久∴| 免费无码国产V片在线观看| 国产免费卡一卡三卡乱码| 亚洲AV成人无码网天堂| 成年女性特黄午夜视频免费看| 7777久久亚洲中文字幕| 日韩av无码成人无码免费| 亚洲精品免费网站| 国产免费啪嗒啪嗒视频看看| 免费夜色污私人影院网站电影| 亚洲精品视频免费| 精品人妻系列无码人妻免费视频 | 亚洲精品第一国产综合野| 亚洲视频在线观看免费视频| 亚洲午夜久久久久久尤物| 毛片高清视频在线看免费观看| 亚洲熟妇无码一区二区三区导航| 妞干网手机免费视频| 国产成人综合亚洲一区| 久久亚洲精品无码观看不卡| 波多野结衣免费一区视频| 亚洲伊人tv综合网色| 97在线线免费观看视频在线观看 | 美女视频黄频a免费| av无码东京热亚洲男人的天堂| 99久久免费国产精品热| 亚洲高清在线观看| 四虎永久在线精品免费网址| 免费精品视频在线| 亚洲AV中文无码乱人伦下载| 亚洲一区免费视频| 亚洲丰满熟女一区二区哦| 亚洲一区AV无码少妇电影☆| 三年片在线观看免费观看高清电影 | 中文字幕影片免费在线观看 | 久久精品7亚洲午夜a| 91精品国产免费久久久久久青草| 日韩国产欧美亚洲v片|