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.jar到weblogic10目錄: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,這樣就可以解決問題了。
但是部分功能會有問題,譬如
但在批量刪除和更新會有問題