WebLogic使用SSH架構部署遇到org.hibernate.hql.internal.ast.HqlTok

其實這個問題在之前就遇到過,當時解決了,但今天在部署一個測試輕應用的時候一直沒有想起來,特此記錄一下。web

 

這個問題出如今使用WebLogic(我使用的是10.3.5版本)發佈SSH架構的應用。在操做數據庫的時候使用Hibernate配合JPA實現。發佈以後沒法從數據庫獲取數據,從日誌看到故障提示org.hibernate.QueryException: ClassNotFoundException: org.hibernate.hql.internal.ast.HqlTokspring

這個錯誤的根本緣由是weblogic要查找本身的antlr,和lib下面的antlr包衝突。最簡單的辦法是修改Hibernate的配置文件數據庫

添加<property name="hibernate.query.factory_class">org.hibernate.hql.classic.ClassicQueryTranslatorFactory</property>架構

若是項目是用spring來管理Hibernate,則須要使用另一種方法測試

修改weblogic.xml
<container-descriptor>
<prefer-web-inf-classes>true</prefer-web-inf-classes>
</container-descriptor>
說明:prefer-web-inf-classes=true是WebLogic's classloader在有重名類時,優先加載Web應用中WEB-INF內的類hibernate

相關文章
相關標籤/搜索