Using Hibernate 3.x in Weblogic Server 10gR3 and 11g

Written by Markus Eisele
08:43
If you ever tried using a different O/R mapper than the ones provided by Oracle, you may have come across several issues. The most common one is a problem with the ANTLR packages. Hibernate3 uses ANTLR for the new query parser. Oracle Weblogic includes a version of ANTLR in the system classpath which will be loaded before any application libraries. If you are using Hibernate in your Webapplication you will need to package the hibernate.jar and all dependencies within you WEB-INF/lib directory. The parent ear file should have an additional weblogic-application.xml descriptor to which the configuration for the FilteringClassLoader is added.


<prefer-application-packages>
<package-name>antlr.*</package-name>
</prefer-application-packages>


If you use Hibernate as JPA provider and package your Entities in the ejb.jar files, you should only add the jars to the APP-INF/lib directory of the ear file. This works without any further problems.

Don't try changing or removing the distributed modules (BEA_HOME/modules)
com.bea.core.antlr.runtime_2.7.7.jar or
com.bea.core.antlr_2.7.7.jar
You will get in deeper trouble (e.g. admin console not completely working).

Comments

Avatar
Hey, can you tell me how to configure hibernate 3.3.1 with weblogic 10.3.2 ? Thanks in advance!
Avatar
Hi Comeonbaby,

I expect this to be exactly the same. Have you tried it? Running into problems? Let me know.

Thanks,
Markus
Avatar
Hi myfear,

I'm busy trying to do this, can you clarify for me which jars should go into the APP-INF/lib directory of the ear file?

Just the Hibernate and dependant jars, or all jars?

Cheers
Avatar
ah, the APP-INF/lib thing is the JEE5 standard way of packaging ears...
Avatar
Hi myfear,

We got stuck at one place during our migration from Weblogic 10.3.0 to Weblogic 10.3.2.
We have one WEB applictaion (WAR) whihc is failing during deployment on new weblogic 10.3.2. However it is working fine with WL 10.3.0.
Error during deplyment:
Failed during named quries
org.hibernate.QueryException: ClassNotFoundException: org.hibernate.hql.ast.HqlToken [from com.creditsuisse.cashmanadvices.domain.Approver where firstName = :firstName and active=1 order by secondName ]
at org.hibernate.hql.ast.HqlLexer.panic(HqlLexer.java:80)
at antlr.CharScanner.setTokenObjectClass(CharScanner.java:340)
at org.hibernate.hql.ast.HqlLexer.setTokenObjectClass(HqlLexer.java:54)
at antlr.CharScanner.(CharScanner.java:51)
at antlr.CharScanner.(CharScanner.java:60)
at org.hibernate.hql.antlr.HqlBaseLexer.(HqlBaseLexer.java:56)
at org.hibernate.hql.antlr.HqlBaseLexer.(HqlBaseLexer.java:53)
at org.hibernate.hql.antlr.HqlBaseLexer.(HqlBaseLexer.java:50)
at org.hibernate.hql.ast.HqlLexer.(HqlLexer.java:49)
at org.hibernate.hql.ast.HqlParser.getInstance(HqlParser.java:67)
at org.hibernate.hql.ast.QueryTranslatorImpl.parse(QueryTranslatorImpl.java:265)
at org.hibernate.hql.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:180)
at org.hibernate.hql.ast.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:134)
at org.hibernate.engine.query.HQLQueryPlan.(HQLQueryPlan.java:101)
at org.hibernate.engine.query.HQLQueryPlan.(HQLQueryPlan.java:80)
at org.hibernate.engine.query.QueryPlanCache.getHQLQueryPlan(QueryPlanCache.java:94)
at org.hibernate.impl.SessionFactoryImpl.checkNamedQueries(SessionFactoryImpl.java:436)
at org.hibernate.impl.SessionFactoryImpl.(SessionFactoryImpl.java:384)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1327)
at org.hibernate.cfg.AnnotationConfiguration.buildSessionFactory(AnnotationConfiguration.java:867)
at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:669)
at org.hibernate.ejb.HibernatePersistence.createContainerEntityManagerFactory(HibernatePersistence.java:132)
at weblogic.deployment.PersistenceUnitInfoImpl.createEntityManagerFactory(PersistenceUnitInfoImpl.java:343)

I had referred number of threads/blogs on internet to remediate this issue; most of them say to have following entry in weblogic.xml
true
Whihc is already present in our code.
But still the same issue.
Please help at the earliest.
Thanks
Avatar
Hi you need to use a FilteringClassLoader. Make sure to configure it (and use an ear!).

-M

The Main Thread

A thoughtful and pragmatic exploration of modern Enterprise Java, Quarkus, and AI that connects technology, architecture, and developer experience.

By Markus Eisele · Over 1,000 subscribers