2025-02-10

 費瞭一天,終於搞定瞭Hibernate和Weblogic81的集成安裝問題。網上資料或多或少涉及到瞭,但都不完整、詳細。本文參考瞭 java視線論壇版主的文章和hibernate網站的文章撰寫瞭本文,希望能對各位Hibernate初學者能有所幫助。

   假設你的工程是D: estprj;D estprjlib存放所有的Hibernate的lib下的jar文件;D; estprjclasses存放所有的class文件,特別包括一weblogic啟動類編寫的專用於建立hibernate的sessionfactory的class文件,還有hibernate.propties、log4j.properties、cache.ccf、oscache.properties四個配置文件;

   D:eaweblogic81

   1.首先第一步是修改配置weblogic啟動環境,添加hibernate的lib和class目錄到weblogic的classpath環境中,具體做法是:
找到 D:eauser_projectsdomainsmydomainstartWebLogic.cmd,添加如下紅色字體代碼到文件中:

set SERVER_NAME=caserver
set CLASSPATH=%WEBLOGIC_CLASSPATH%;%POINTBASE_CLASSPATH%;
        %JAVA_HOME%jrelibt.jar;%WL_HOME%serverlibwebservices.jar;%CLASSPATH%
@rem set hibernate classpath
set HIBERNATE_LIB=D estprjlib
set HIBERNATE_CLASSES=D estprjclasses
set CLASSPATH=%HIBERNATE_LIB%cglib-asm.jar;%HIBERNATE_LIB%cglib-full-2.0.1.jar;%HIBERNATE_LIB%ehcache-0.7.jar;%HIBERNATE_LIB%commons-beanutils.jar;%HIBERNATE_LIB%commons-logging-1.0.3.jar;%HIBERNATE_LIB%commons-collections-2.1.jar;%HIBERNATE_LIB%commons-lang.jar;%HIBERNATE_LIB%commons-logging.jar;%HIBERNATE_LIB%dom4j-full.jar;%HIBERNATE_LIB%jcs.jar;%HIBERNATE_LIB%log4j-1.2.8.jar;%HIBERNATE_LIB%odmg.jar;%HIBERNATE_LIB%dom4j-1.4.jar;%HIBERNATE_LIB%hibernate2.jar;%HIBERNATE_CLASSES%;%CLASSPATH%

@REM Call WebLogic Server


   註意到網上有的網友同樣添加jar文件後可能有空格或換行符,出現瞭用winrar和weblogic不能正常啟動的現象,所以最好set CLASSPATH這一行一定要一行寫完,同樣jar文件名一定要和hibernate 的jar文件一致,否者,最後weblogic啟動時候,會出現找不到什麼class not found的現象。

   2.利用weblogic的console配置一個jdbc pool,我采用的數據庫是sybase,以及一個datasource,datasource當然要用開頭的jdbc pool,我們假設它的jndi名稱為misdb。

   3.修改hibernate的配置文件,hibernate的配置文件有兩個hibernate.propties和hibernate.cfg.xml,前一個是hibernate啟動後調用缺省初始化環境文件,後一個是可動態調整,比如說添加數據表的映射文件等等,如何添加的代碼,網上可以找的到,我這裡就不重復瞭,兩個配置文件有一個就可以瞭,在初始化hibernate,將hibernate幫定到weblogic的jndi,我們可以在第四步的weblogic啟動類源代碼中說明。

   hibernate.propties文件配置文件配置比較簡單,而且數據庫的參數,很多都已經用註釋寫好瞭。真是太cool瞭。

   這裡我們要用weblogic的數據源misdb.

   修改添加如下代碼,切記,一定保證下面代碼唯一啊。

## HypersonicSQL
#hibernate.dialect net.sf.hibernate.dialect.HSQLDialect
#hibernate.connection.driver_class org.hsqldb.jdbcDriver
#hibernate.connection.username sa
#hibernate.connection.password
#hibernate.connection.url jdbc:hsqldb:hsql://localhost
#hibernate.connection.url jdbc:hsqldb:test
#hibernate.connection.url jdbc:hsqldb:.

   綠色代碼一定要註釋掉,用#符號

hibernate.dialect net.sf.hibernate.dialect.SybaseDialect
hibernate.connection.datasource misdb
hibernate.connection.provider_class net.sf.hibernate.connection.DatasourceConnectionProvider
hibernate.session_factory_name hibernate.session_factory
hibernate.jdbc.fetch_size 50
hibernate.jdbc.batch_size 25

   紅色代碼添加入,註意可能後面也有相應的參數配置,記住註釋掉

   放心,附件會附代碼的

   okay.文件配置完畢,記住要在d: estprjclasses目錄下;

   4.編寫weblogic啟動類源程序,沒辦法,因為weblogic特殊,隻能這樣建立hibernate 的sessionfactory,為什麼,因為下面這句
the JNDI implementation in WebLogic Server does not appear to support the Referenceable interface, and exhibits some rather strange behaviour when binding Serializable objects.

   代碼關鍵兩句是

Configuration cfg = new Configuration();
SessionFactory factory = cfg.buildSessionFactory();

   網上有些文章到不是不對,有的是直接映射瞭對象類,比如說cat類瞭,有的是用

Configuration cfg = new Configuration().configure();
   記住此時就是用hibernate.cfg.xml 文件配置。

   我覺得我這兩句最簡單,直接調用瞭hibernate.propties的參數;代碼能,下面也有,編譯的時候一定要用ant編譯,如何配置ant,網上很多文章都有提到,我就不多說瞭。將WLSstartup.java放到D:hibernate21src
etsfhibernate下,然後在命令行下用ant或者運行build.bat批處理文件,編譯後的WlSstartup.class大概在D:hibernate21uild目錄下,然後copy到d: estprjclasses

   okay,完畢

   5.就是將WlSstartup類在weblogic的console中配置好,怎麼配,robbin的文章或者weblogic的隨便那個管理配置的文章都有,我這裡就不提瞭。

   好的,所有註意事項步驟完畢,啟動你的weblogic吧。應該是正常的信息,隻要你按照我的步驟做,沒問題的。

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *