users@glassfish.java.net

Re: Classloading Error for JPA Implementation

From: Marina Vatkina <Marina.Vatkina_at_Sun.COM>
Date: Mon, 19 Mar 2007 16:58:01 -0700

Hi,

Do Hibernate jars contain javax.persistence classes? I think that if you try the
latest GlassFish build, you won't get the NPE from TopLink code.

thanks,
-marina

glassfish_at_javadesktop.org wrote:
> Hi,
>
> I have a webapp packaged as .war and used Hibernate JPA instead of TopLink. All the required Hibernate .jars are in the WEB-INF/lib directory.
>
> According to the url below, I set <class-loader delegate="false"/> to have Glassfish followed the Servlet specification by loading the jars in WEB-INF/lib.
>
> My application runs fine when Glassfish loads up the Hibernate JPA implementation. I got the error below, when it loaded up the Toplink implementation which I didn't want.
>
> I don't know how Glassfish decides which JPA implementation to load because during a server restart, it will randomly choose one over another. If I get lucky when Glassfish obeys the class-loader tag, then my application will work fine, else I get the error below.
>
> https://glassfish.dev.java.net/javaee5/docs/DG/beade.html
> "The Servlet specification recommends that the Web Classloader look in the local class loader before delegating to its parent. You can make the Web Classloader follow the delegation inversion model in the Servlet specification by setting delegate="false" in the class-loader element of the sun-web.xml file. It's safe to do this only for a web module that does not interact with any other modules"
>
> I experienced this issue in both of these versions:
> Solaris: Sun Java System Application Server Platform Edition 9.0_01 (build b14)
> Windows: Sun Java System Application Server Platform Edition 9.0_01 (build b02-p01)
>
> 15:46:48,763 FATAL MyEntityManagerFactory: Failed to create EntityManagerFactory for persistence-unit=MyService
> java.lang.NullPointerException
> at oracle.toplink.essentials.ejb.cmp3.EntityManagerFactoryProvider.createEntityManagerFactory(EntityManagerFactoryProvider.java:120)
> at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:83)
> at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:60)
> at test.common.service.MyEntityManagerFactory.<clinit>(MyEntityManagerFactory.java:28)
> at test.common.service.ServiceFactory.close(ServiceFactory.java:40)
> at test.common.web.filter.MyServiceExtendedPersistenceContextFilter.doFilter(MyServiceExtendedPersistenceContextFilter.java:46)
> at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:216)
> at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:184)
> at test.common.web.filter.SessionExpirationFilter.doFilter(SessionExpirationFilter.java:48)
> at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:216)
> at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:184)
> at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:276)
> at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:566)
> at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:536)
> at org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:240)
> at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:179)
> at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:566)
> at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:73)
> at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:182)
> at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:566)
> at com.sun.enterprise.web.VirtualServerPipeline.invoke(VirtualServerPipeline.java:120)
> at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:939)
> at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:137)
> at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:566)
> at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:536)
> at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:939)
> at org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:239)
> at com.sun.enterprise.web.connector.grizzly.ProcessorTask.invokeAdapter(ProcessorTask.java:667)
> at com.sun.enterprise.web.connector.grizzly.ProcessorTask.processNonBlocked(ProcessorTask.java:574)
> at com.sun.enterprise.web.connector.grizzly.ProcessorTask.process(ProcessorTask.java:844)
> at com.sun.enterprise.web.connector.grizzly.ReadTask.executeProcessorTask(ReadTask.java:287)
> at com.sun.enterprise.web.connector.grizzly.ReadTask.doTask(ReadTask.java:212)
> at com.sun.enterprise.web.connector.grizzly.TaskBase.run(TaskBase.java:252)
> at com.sun.enterprise.web.connector.grizzly.WorkerThread.run(WorkerThread.java:75)
> |#]
> [Message sent by forum member 'tmv' (tmv)]
>
> http://forums.java.net/jive/thread.jspa?messageID=208822
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe_at_glassfish.dev.java.net
> For additional commands, e-mail: users-help_at_glassfish.dev.java.net
>