eagames |
|
|||
日歷
統(tǒng)計
導(dǎo)航常用鏈接留言簿(2)隨筆分類
隨筆檔案收藏夾test搜索最新評論
閱讀排行榜評論排行榜 |
最近,在 bartsandbox 上,有人問我在 WebLogic 上配置 Hibernate 的具體步驟。您可能知道, Hibernate 是一個非常流行的開源對象關(guān)系映射 (Object Relational Mapping , ORM) 工具。下面是在 WebLogic 8.1 上配置 Hibernate 的具體步驟:
? 首先要創(chuàng)建一個域。我創(chuàng)建了一個 WebLogic Workshop (WLW) 域,因為我打算使用 WLW 來創(chuàng)建和實現(xiàn)應(yīng)用程序。 ? 將 hibernate...\lib\antlr-2.7.5H3.jar 添加到 PRE_CLASSPATH ,或者在 hibernate.cfg.xml 文件中將 query.factory_class 屬性設(shè)為 user 2.x's query factory 。 ? WLW 域還啟動了一個 PointBase 數(shù)據(jù)庫實例。我將使用這個內(nèi)置實例。我創(chuàng)建了一個新的用戶和模式。并為該模式填充了一些示例數(shù)據(jù)。 ? 在服務(wù)器實例中配置連接池和數(shù)據(jù)源。 ? 創(chuàng)建應(yīng)用程序。我打算使用 WebLogic Workshop 創(chuàng)建。 ? 應(yīng)該將庫( jar 文件)(它們是成功運行 Hibernate 所必需的)放在哪里呢?放在應(yīng)用程序的 APP-INF/lib 文件夾中。庫包括 hibernate.jar 和附加的第三方庫。引用 Hibernate Reference 的表格 3-1 。 ? 在 WLW 中創(chuàng)建一個 Java 項目。該 Java 項目包括映射到數(shù)據(jù)庫的域類。 WLW 編譯該項目,并將生成的 jar 文件放到 APP-INF/lib 目錄下。在 Java 項目中編碼域類。創(chuàng)建 Hibernate 映射文件和 Hibernate 配置文件。此外,從 Hibernate Reference 復(fù)制實現(xiàn),創(chuàng)建 HibenateUtil 類。 Hibernate 配置文件包括數(shù)據(jù)源的 JNDI 名。 ? 創(chuàng)建一個 EJB 對象(例如,一個模塊)。該項目包含了會話 bean 。編寫一個操縱域類的會話 bean 。 ? 創(chuàng)建一個 Web 或 Web Service 項目(例如,一個模塊)。該項目包含了可互操作性地測試會話 bean 的組件。 完整、有效、自包含的示例應(yīng)用程序 在此 。其中包括了模式和所有的 Hibernate 配置文件。(注:需要有 bartsandbox 的免費會員資格。) 接下來的文章中,我將增強(qiáng)這一基本配置。 我們先從 JNDI 開始。通過在 hibernate.cfg.xml 文件中命名 SessionFactory , Hibernate 使 SessionFactory 在 JNDI 中可用。呀!這在 WebLogic 中不起作用。正如 此處 所描述的, WebLogic JNDI 與 Hibernate 配合得不是很好。有多個工作區(qū)。工作區(qū)手動將 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 托管事務(wù)界定 (Bean Managed Transaction Demarcation , BMTD) bean 使用 JTATransactionFactory ,而對容器托管事務(wù)界定 (Container Managed Transaction Demarcation , CMTD) bean 使用 CMTTransactionFactory 。 JTATransactionFactory 似乎更通用些,它既支持 BMTD bean 又支持 CMTD bean 。因此,我配置的是 JTATransactionFactory 。此外,為了以特定于容器的方式查找事務(wù),我在 hibernate.cfg.xml 文件中配置了 transaction.manager_lookup_class 。借助于這個配置,我完全不需要使用 Hibernate Transaction API 。 對 Hibernate 的 JCA 支持是實驗性質(zhì)的,目前還沒有全面應(yīng)用于 WebLogic 。我可以設(shè)想,以后 Hibernate 會被打包為 Resource ARchive (RAR) 文件。 Hibernate RAR 文件作為資源適配器部署。適配器使 Session 在 JNDI 中可用。所有的配置元素都是通過資源適配器( xml 文件)配置的,而不是通過 hibernate.cfg.xml 文件或采用其他方法配置。為什么在 WebLogic 中要配置 Hibernate 使用 JCA ? JCA 旨在封裝傳統(tǒng)系統(tǒng)的連接、事務(wù)等等,并使它們在 J2EE 中可用。但是,由于 Hibernate ,傳統(tǒng)的資源適配器的優(yōu)勢不能全面體現(xiàn)。一旦 Hibernate 被配置為資源適配器,特定的應(yīng)用程序與 Hibernate 的耦合就被削弱了。多個不同的應(yīng)用程序可以使用同一個 Hibernate 資源適配器。由于當(dāng)前正在開發(fā)的 EJB 3.0 ,這種配置在 EJB 的持久性 API 、 Hibernate 和 Java 數(shù)據(jù)對象 (Java Data Object , JDO) 的標(biāo)準(zhǔn)化方面的優(yōu)勢更為明顯。從理論上講,可以熱部署(或重部署)適配器和改變持久性實現(xiàn)。 Hibernate 附帶 JMX Management Bean (MBean) 實現(xiàn)。我不知道如何使用 JMX 將 Hibernate 部署到 WebLogic 上。 Hibernate 和 WebLogic 使用 JMX 有什么好處?至少有兩條。一條是部署和重部署。更重要的一條是,可以監(jiān)控 Hibernate 和獲得的統(tǒng)計信息。從 JMX 控制臺進(jìn)行運行時監(jiān)控是所部署的應(yīng)用程序運行良好的基本保障。 我更新了示例應(yīng)用程序,可 在此 獲取。(注:需要有 bartsandbox 的免費會員資格。)
評論:
|
![]() |
|
Copyright © EA_Games | Powered by: 博客園 模板提供:滬江博客 |