weblogic10和hibernate3 衝突解決方案(轉)

weblogic10和hibernate3 衝突解決方案(轉)  

2010-08-30 17:12:59|  分類: Weblogic10 |  標籤:jar  antlr  hibernate3  xml  weblogic10   |字號 訂閱

Weblogic中部署Hibernate的項目啓動WebLogic時一直提示:ClassNotFoundException: org.hibernate.hql.ast.HqlToken

錯誤原因:

hibernate3中需要用到antlr,然而這個包在weblogic.jar中已經包含了antrl類庫,就會產生一些類加載的錯誤,無法找到在war或者ear中的hibernate3.jar
出現這個錯誤之後,antlr會調用System.exit(),這樣weblogic就會中止服務。 

廢話少說,解決辦法:三個步驟

1:在用戶工程代碼web-inf下建立xml文件:weblogic.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE weblogic-web-app PUBLIC "-//BEA Systems, Inc.//DTD Web Application 8.1//EN" "http://www.bea.com/servers/wls810/dtd/weblogic810-web-jar.dtd">
<weblogic-web-app>  
    <container-descriptor>
        <prefer-web-inf-classes>true</prefer-web-inf-classes>
    </container-descriptor>
</weblogic-web-app>

2:拷貝用戶工程裏的antlr-2.7.6rc1.jarweblogic10目錄:D:\bea\wlserver_10.0\server\lib

3:改造當前weblogic用戶的startWebLogic.cmd
set PRE_CLASSPATH=%WL_HOME%\server\lib\antlr-2.7.6rc1.jar 
 
set CLASSPATH=%SAVE_CLASSPATH%—————————
原來的
set CLASSPATH=%PRE_CLASSPATH%;%CLASSPATH%

網上有說:

hibernate.properties文件中增加屬性:hibernate.query.factory_class,屬性的值是org.hibernate.hql.classic.ClassicQueryTranslatorFactory,這樣就可以解決問題了。
但是部分功能會有問題,譬如
但在批量刪除和更新會有問題

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章