<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ù)  更多評論
      

    主站蜘蛛池模板: 久久亚洲欧美国产精品| 香蕉国产在线观看免费| 亚洲一区无码精品色| 无码精品A∨在线观看免费| 成人毛片100免费观看| 亚洲AV日韩综合一区| 亚洲人成黄网在线观看| 久久综合九九亚洲一区| 四虎永久免费影院| 精品国产一区二区三区免费看| 久久99热精品免费观看牛牛| 国产裸体美女永久免费无遮挡| 久久亚洲精品无码av| 亚洲xxxx视频| 亚洲中文无码亚洲人成影院| 亚洲一级黄色大片| 亚洲最新中文字幕| 亚洲美女视频一区二区三区| 久久青草亚洲AV无码麻豆| 亚洲国产精品无码久久SM| 国产综合亚洲专区在线| 亚洲人成色77777在线观看大 | 亚洲国产精品无码久久久秋霞2| 亚洲黄黄黄网站在线观看| 国产大片91精品免费看3| 暖暖在线日本免费中文| 韩国免费三片在线视频| 日韩免费观看视频| 最好免费观看韩国+日本| 免费无码又爽又高潮视频| 最好免费观看韩国+日本| 国产又粗又长又硬免费视频| 免费理论片51人人看电影| 午夜视频免费观看| 国产男女猛烈无遮挡免费视频| 日韩一区二区免费视频| 国产三级电影免费观看| 亚洲精品无码久久久久AV麻豆| 国产亚洲av人片在线观看| 久久亚洲精品中文字幕三区| 亚洲不卡中文字幕无码|