eagames  
          日歷
          <2008年9月>
          31123456
          78910111213
          14151617181920
          21222324252627
          2829301234
          567891011
          統計
          • 隨筆 - 22
          • 文章 - 0
          • 評論 - 2
          • 引用 - 0

          導航

          常用鏈接

          留言簿(2)

          隨筆分類

          隨筆檔案

          收藏夾

          test

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

           

          最近,在 bartsandbox 上,有人問我在 WebLogic 上配置 Hibernate 的具體步驟。您可能知道, Hibernate 是一個非常流行的開源對象關系映射 (Object Relational Mapping , ORM) 工具。下面是在 WebLogic 8.1 上配置 Hibernate 的具體步驟:

           

          ?  首先要創建一個域。我創建了一個 WebLogic Workshop (WLW) 域,因為我打算使用 WLW 來創建和實現應用程序。

          ?  將 hibernate...\lib\antlr-2.7.5H3.jar 添加到 PRE_CLASSPATH ,或者在 hibernate.cfg.xml 文件中將 query.factory_class 屬性設為 user 2.x's query factory 。

          ?  WLW 域還啟動了一個 PointBase 數據庫實例。我將使用這個內置實例。我創建了一個新的用戶和模式。并為該模式填充了一些示例數據。

          ?  在服務器實例中配置連接池和數據源。

          ?  創建應用程序。我打算使用 WebLogic Workshop 創建。

          ?  應該將庫( jar 文件)(它們是成功運行 Hibernate 所必需的)放在哪里呢?放在應用程序的 APP-INF/lib 文件夾中。庫包括 hibernate.jar 和附加的第三方庫。引用 Hibernate Reference 的表格 3-1 。

          ?  在 WLW 中創建一個 Java 項目。該 Java 項目包括映射到數據庫的域類。 WLW 編譯該項目,并將生成的 jar 文件放到 APP-INF/lib 目錄下。在 Java 項目中編碼域類。創建 Hibernate 映射文件和 Hibernate 配置文件。此外,從 Hibernate Reference 復制實現,創建 HibenateUtil 類。 Hibernate 配置文件包括數據源的 JNDI 名。

          ?  創建一個 EJB 對象(例如,一個模塊)。該項目包含了會話 bean 。編寫一個操縱域類的會話 bean 。

          ?  創建一個 Web 或 Web Service 項目(例如,一個模塊)。該項目包含了可互操作性地測試會話 bean 的組件。

          完整、有效、自包含的示例應用程序 在此 。其中包括了模式和所有的 Hibernate 配置文件。(注:需要有 bartsandbox 的免費會員資格。)

          接下來的文章中,我將增強這一基本配置。
          我的 前一篇文章 描述了在 WebLogic 8.1 上配置 Hibernate 3.0 的具體步驟。文章引起了巨大的反響。在本文中,我將介紹高級配置,其中 Hibernate 使用了 WebLogic 的 Java 命名和目錄接口 (Java Naming and Directory Interface , JNDI) 、 Java 事務 API (Java Transaction API , JTA) 、 Java 連接器架構 (Java Connector Architecture , JCA) 和 Java 管理擴展 (Java Management extension , JMX) 實現。

          我們先從 JNDI 開始。通過在 hibernate.cfg.xml 文件中命名 SessionFactory , Hibernate 使 SessionFactory 在 JNDI 中可用。呀!這在 WebLogic 中不起作用。正如 此處 所描述的, WebLogic JNDI 與 Hibernate 配合得不是很好。有多個工作區。工作區手動將 SessionFactory 綁定到 JNDI 中,方法是通過 WebLogic startup 類或者啟動 servlet 。但是,我不能使 SessionFactory 實例從 JNDI 安全返回。因此,折衷一下,為 SessionFactory 向 HibernateUtil 實用類添加一個存取器。

          為了配置 Hibernate 使用 JTA ,我在 hibernate.cfg.xml 文件中配置了 transaction.factory_class 。有兩個選項: org.hibernate.transaction.JTATransactionFactory 和 org.hibernate.transaction.CMTTransactionFactory 。說明文檔建議,對 Bean 托管事務界定 (Bean Managed Transaction Demarcation , BMTD) bean 使用 JTATransactionFactory ,而對容器托管事務界定 (Container Managed Transaction Demarcation , CMTD) bean 使用 CMTTransactionFactory 。 JTATransactionFactory 似乎更通用些,它既支持 BMTD bean 又支持 CMTD bean 。因此,我配置的是 JTATransactionFactory 。此外,為了以特定于容器的方式查找事務,我在 hibernate.cfg.xml 文件中配置了 transaction.manager_lookup_class 。借助于這個配置,我完全不需要使用 Hibernate Transaction API 。

          對 Hibernate 的 JCA 支持是實驗性質的,目前還沒有全面應用于 WebLogic 。我可以設想,以后 Hibernate 會被打包為 Resource ARchive (RAR) 文件。 Hibernate RAR 文件作為資源適配器部署。適配器使 Session 在 JNDI 中可用。所有的配置元素都是通過資源適配器( xml 文件)配置的,而不是通過 hibernate.cfg.xml 文件或采用其他方法配置。為什么在 WebLogic 中要配置 Hibernate 使用 JCA ? JCA 旨在封裝傳統系統的連接、事務等等,并使它們在 J2EE 中可用。但是,由于 Hibernate ,傳統的資源適配器的優勢不能全面體現。一旦 Hibernate 被配置為資源適配器,特定的應用程序與 Hibernate 的耦合就被削弱了。多個不同的應用程序可以使用同一個 Hibernate 資源適配器。由于當前正在開發的 EJB 3.0 ,這種配置在 EJB 的持久性 API 、 Hibernate 和 Java 數據對象 (Java Data Object , JDO) 的標準化方面的優勢更為明顯。從理論上講,可以熱部署(或重部署)適配器和改變持久性實現。

          Hibernate 附帶 JMX Management Bean (MBean) 實現。我不知道如何使用 JMX 將 Hibernate 部署到 WebLogic 上。 Hibernate 和 WebLogic 使用 JMX 有什么好處?至少有兩條。一條是部署和重部署。更重要的一條是,可以監控 Hibernate 和獲得的統計信息。從 JMX 控制臺進行運行時監控是所部署的應用程序運行良好的基本保障。

          我更新了示例應用程序,可 在此 獲取。(注:需要有 bartsandbox 的免費會員資格。)

           

          posted on 2005-10-21 22:26 EA_Games 閱讀(399) 評論(1)  編輯  收藏 所屬分類: Hibernate
          評論:
          • # re: 配置WebLogic 8.1和Hibernate 3.0[未登錄]  Andy Posted @ 2008-09-27 17:26
            垃圾  回復  更多評論   

           
          Copyright © EA_Games Powered by: 博客園 模板提供:滬江博客
          主站蜘蛛池模板: 夹江县| 林西县| 南京市| 辽宁省| 饶阳县| 明光市| 丹凤县| 阿拉尔市| 双牌县| 莱州市| 凌海市| 措勤县| 承德县| 麻城市| 师宗县| 佳木斯市| 石阡县| 溆浦县| 沙洋县| 桂东县| 岳阳县| 无棣县| 黄石市| 罗源县| 洮南市| 阿荣旗| 马尔康县| 封丘县| 怀安县| 泸水县| 合江县| 苏尼特左旗| 余干县| 澎湖县| 汝城县| 万山特区| 松江区| 霍邱县| 湄潭县| 多伦县| 石楼县|