These old forums are deprecated now and set to read-only. We are waiting for you on our new forums!
More modern, Discourse-based and with GitHub/Google/Twitter authentication built-in.

All times are UTC - 5 hours [ DST ]



Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 3 posts ] 
Author Message
 Post subject: JPA auto detect issue
PostPosted: Wed May 07, 2008 9:48 am 
Newbie

Joined: Wed May 07, 2008 9:15 am
Posts: 1
I'm going through "The best book about Hibernate..." and I'm working on using JPA annotation with Hibernate. I created a servlet that is packaged as a JAR file. Inside the servlet I created a POJO and added @javax.persistence.Entity to the class. If I don't add
<exclude-unlisted-classes>true</exclude-unlisted-classes> to persistence.xml, I get the error No ClassLoaders found for: WEB-INF.classes.com.mckesson.hbi.servlets.printing.Twit What's throwing me off is the WEB-INF.classes.. How did that get in there? If I add the exclude tag, and add the class explicitly in persistence.xml, it works.

Any thoughts on how I'm supposed to tell the class detector that WEB-INF.classes is not part of the package name?

Hibernate core version: 3.2

Hibernate annotations version: 3.3.1 GA

Hibernate entity manager version: 3.3.2 GA

Name and version of the database you are using: SQL Server 2005

persistence.xml:
Code:
<persistence xmlns="http://java.sun.com/xml/ns/persistence"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/persistence
    http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd"
    version="1.0">

    <persistence-unit name="WebTrend">
        <provider>org.hibernate.ejb.HibernatePersistence</provider>
        <class>com.mckesson.hbi.servlets.printing.Twit</class>
<!-- Need this to make it work -->
        <exclude-unlisted-classes>true</exclude-unlisted-classes>
        <properties>
         <property name="hibernate.show_sql" value="true"/>
         <property name="hibernate.format_sql" value="true"/>
         <property name="use_sql_comments" value="true"/>

            <property name="hibernate.dialect" value="org.hibernate.dialect.SQLServerDialect"/>
            <property name="hibernate.connection.driver_class" value="net.sourceforge.jtds.jdbc.Driver"/>
            <property name="hibernate.connection.username" value="removed"/>
            <property name="hibernate.connection.password" value="removed"/>
            <property name="hibernate.connection.url" value="jdbc:jtds:sqlserver://localhost/WebTrend"/>
        </properties>
    </persistence-unit>
</persistence>


Class:
Code:
package com.mckesson.hbi.servlets.printing;

import javax.persistence.Table;
import javax.persistence.Entity;

@Entity
@Table(name = "highlight_print_data")
public class Twit {

}


Stack trace:
Code:
exception

javax.persistence.PersistenceException: [PersistenceUnit: WebTrend] class or package not found
   org.hibernate.ejb.Ejb3Configuration.addNamedAnnotatedClasses(Ejb3Configuration.java:1089)
   org.hibernate.ejb.Ejb3Configuration.addClassesToSessionFactory(Ejb3Configuration.java:886)
   org.hibernate.ejb.Ejb3Configuration.configure(Ejb3Configuration.java:772)
   org.hibernate.ejb.Ejb3Configuration.configure(Ejb3Configuration.java:183)
   org.hibernate.ejb.Ejb3Configuration.configure(Ejb3Configuration.java:240)
   org.hibernate.ejb.HibernatePersistence.createEntityManagerFactory(HibernatePersistence.java:120)
   javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:51)
   javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:33)
   com.mckesson.hbi.servlets.printing.HighlightPDFDocument.<init>(HighlightPDFDocument.java:98)
   com.mckesson.hbi.servlets.printing.PrintServlet.doPost(PrintServlet.java:126)
   javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
   javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
   org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)

root cause

java.lang.ClassNotFoundException: No ClassLoaders found for: WEB-INF.classes.com.mckesson.hbi.servlets.printing.Twit
   org.jboss.mx.loading.LoadMgr3.beginLoadTask(LoadMgr3.java:212)
   org.jboss.mx.loading.RepositoryClassLoader.loadClassImpl(RepositoryClassLoader.java:521)
   org.jboss.mx.loading.RepositoryClassLoader.loadClass(RepositoryClassLoader.java:415)
   java.lang.ClassLoader.loadClass(ClassLoader.java:251)
   java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)
   java.lang.Class.forName0(Native Method)
   java.lang.Class.forName(Class.java:242)
   org.hibernate.util.ReflectHelper.classForName(ReflectHelper.java:112)
   org.hibernate.ejb.Ejb3Configuration.classForName(Ejb3Configuration.java:1005)
   org.hibernate.ejb.Ejb3Configuration.addNamedAnnotatedClasses(Ejb3Configuration.java:1077)
   org.hibernate.ejb.Ejb3Configuration.addClassesToSessionFactory(Ejb3Configuration.java:886)
   org.hibernate.ejb.Ejb3Configuration.configure(Ejb3Configuration.java:772)
   org.hibernate.ejb.Ejb3Configuration.configure(Ejb3Configuration.java:183)
   org.hibernate.ejb.Ejb3Configuration.configure(Ejb3Configuration.java:240)
   org.hibernate.ejb.HibernatePersistence.createEntityManagerFactory(HibernatePersistence.java:120)
   javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:51)
   javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:33)
   com.mckesson.hbi.servlets.printing.HighlightPDFDocument.<init>(HighlightPDFDocument.java:98)
   com.mckesson.hbi.servlets.printing.PrintServlet.doPost(PrintServlet.java:126)
   javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
   javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
   org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)


Debug level Hibernate log excerpt:
Code:
2008-05-07 09:26:03,061 DEBUG [org.hibernate.ejb.Ejb3Configuration] Look up for persistence unit: WebTrend
2008-05-07 09:26:03,061 DEBUG [org.hibernate.util.DTDEntityResolver] trying to resolve system-id [http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd]
2008-05-07 09:26:03,061 DEBUG [org.hibernate.cfg.EJB3DTDEntityResolver] recognized EJB3 ORM namespace; attempting to resolve on classpath under org/hibernate/ejb
2008-05-07 09:26:03,061 DEBUG [org.hibernate.cfg.EJB3DTDEntityResolver] located [http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd] in classpath
2008-05-07 09:26:03,076 DEBUG [org.hibernate.ejb.Ejb3Configuration] Detect class: true; detect hbm: true
2008-05-07 09:26:03,076 DEBUG [org.hibernate.ejb.packaging.JarVisitor] Searching mapped entities in jar/par: file:/C:/devtools/jboss/server/hbi/tmp/deploy/tmp10384hbi-servlets-exp.war
2008-05-07 09:26:03,076 DEBUG [org.hibernate.ejb.packaging.JarVisitor] Filtering: WEB-INF.classes.com.mckesson.hbi.servlets.printing.HBIPDFDocument$Cell
2008-05-07 09:26:03,076 DEBUG [org.hibernate.ejb.packaging.JarVisitor] Filtering: WEB-INF.classes.com.mckesson.hbi.servlets.printing.HBIPDFDocument$EventHandler
2008-05-07 09:26:03,076 DEBUG [org.hibernate.ejb.packaging.JarVisitor] Filtering: WEB-INF.classes.com.mckesson.hbi.servlets.printing.HBIPDFDocument$SectionCell$DateCell
2008-05-07 09:26:03,076 DEBUG [org.hibernate.ejb.packaging.JarVisitor] Filtering: WEB-INF.classes.com.mckesson.hbi.servlets.printing.HBIPDFDocument$SectionCell$EmptyCell
2008-05-07 09:26:03,076 DEBUG [org.hibernate.ejb.packaging.JarVisitor] Filtering: WEB-INF.classes.com.mckesson.hbi.servlets.printing.HBIPDFDocument$SectionCell$NameCell
2008-05-07 09:26:03,076 DEBUG [org.hibernate.ejb.packaging.JarVisitor] Filtering: WEB-INF.classes.com.mckesson.hbi.servlets.printing.HBIPDFDocument$SectionCell$PageCell
2008-05-07 09:26:03,076 DEBUG [org.hibernate.ejb.packaging.JarVisitor] Filtering: WEB-INF.classes.com.mckesson.hbi.servlets.printing.HBIPDFDocument$SectionCell$PageOfCell
2008-05-07 09:26:03,076 DEBUG [org.hibernate.ejb.packaging.JarVisitor] Filtering: WEB-INF.classes.com.mckesson.hbi.servlets.printing.HBIPDFDocument$SectionCell
2008-05-07 09:26:03,076 DEBUG [org.hibernate.ejb.packaging.JarVisitor] Filtering: WEB-INF.classes.com.mckesson.hbi.servlets.printing.HBIPDFDocument
2008-05-07 09:26:03,076 DEBUG [org.hibernate.ejb.packaging.JarVisitor] Filtering: WEB-INF.classes.com.mckesson.hbi.servlets.printing.HighlightData
2008-05-07 09:26:03,076 DEBUG [org.hibernate.ejb.packaging.JarVisitor] Filtering: WEB-INF.classes.com.mckesson.hbi.servlets.printing.HighlightPDFDocument
2008-05-07 09:26:03,076 DEBUG [org.hibernate.ejb.packaging.JarVisitor] Filtering: WEB-INF.classes.com.mckesson.hbi.servlets.printing.PrintOptions$Margins
2008-05-07 09:26:03,076 DEBUG [org.hibernate.ejb.packaging.JarVisitor] Filtering: WEB-INF.classes.com.mckesson.hbi.servlets.printing.PrintOptions$Section
2008-05-07 09:26:03,076 DEBUG [org.hibernate.ejb.packaging.JarVisitor] Filtering: WEB-INF.classes.com.mckesson.hbi.servlets.printing.PrintOptions
2008-05-07 09:26:03,076 DEBUG [org.hibernate.ejb.packaging.JarVisitor] Filtering: WEB-INF.classes.com.mckesson.hbi.servlets.printing.PrintServlet
2008-05-07 09:26:03,076 DEBUG [org.hibernate.ejb.packaging.JarVisitor] Filtering: WEB-INF.classes.com.mckesson.hbi.servlets.printing.Twit
2008-05-07 09:26:03,076 DEBUG [org.hibernate.ejb.packaging.JarVisitor] Java element filter matched for WEB-INF.classes.com.mckesson.hbi.servlets.printing.Twit
2008-05-07 09:26:03,076 DEBUG [org.hibernate.ejb.Ejb3Configuration] Detect class: true; detect hbm: true
2008-05-07 09:26:03,076 DEBUG [org.hibernate.ejb.Ejb3Configuration] Creating Factory: WebTrend
2008-05-07 09:26:03,092 ERROR [org.apache.catalina.core.ContainerBase.[jboss.web].[localhost].[/hbi-servlets].[PrintServlet]] Servlet.service() for servlet PrintServlet threw exception
javax.persistence.PersistenceException: [PersistenceUnit: WebTrend] class or package not found
   at org.hibernate.ejb.Ejb3Configuration.addNamedAnnotatedClasses(Ejb3Configuration.java:1089)
   at org.hibernate.ejb.Ejb3Configuration.addClassesToSessionFactory(Ejb3Configuration.java:886)
   at org.hibernate.ejb.Ejb3Configuration.configure(Ejb3Configuration.java:772)
   at org.hibernate.ejb.Ejb3Configuration.configure(Ejb3Configuration.java:183)
   at org.hibernate.ejb.Ejb3Configuration.configure(Ejb3Configuration.java:240)
   at org.hibernate.ejb.HibernatePersistence.createEntityManagerFactory(HibernatePersistence.java:120)
   at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:51)
   at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:33)
   at com.mckesson.hbi.servlets.printing.HighlightPDFDocument.<init>(HighlightPDFDocument.java:98)
   at com.mckesson.hbi.servlets.printing.PrintServlet.doPost(PrintServlet.java:126)
   at javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
   at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
   at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
   at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
   at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
   at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
   at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
   at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230)
   at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
   at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:179)
   at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:84)
   at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
   at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
   at org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:157)
   at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
   at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:262)
   at org.apache.coyote.http11.Http11AprProcessor.process(Http11AprProcessor.java:856)
   at org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:566)
   at org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:1508)
   at java.lang.Thread.run(Thread.java:595)
Caused by: java.lang.ClassNotFoundException: No ClassLoaders found for: WEB-INF.classes.com.mckesson.hbi.servlets.printing.Twit
   at org.jboss.mx.loading.LoadMgr3.beginLoadTask(LoadMgr3.java:212)
   at org.jboss.mx.loading.RepositoryClassLoader.loadClassImpl(RepositoryClassLoader.java:521)
   at org.jboss.mx.loading.RepositoryClassLoader.loadClass(RepositoryClassLoader.java:415)
   at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
   at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)
   at java.lang.Class.forName0(Native Method)
   at java.lang.Class.forName(Class.java:242)
   at org.hibernate.util.ReflectHelper.classForName(ReflectHelper.java:112)
   at org.hibernate.ejb.Ejb3Configuration.classForName(Ejb3Configuration.java:1005)
   at org.hibernate.ejb.Ejb3Configuration.addNamedAnnotatedClasses(Ejb3Configuration.java:1077)
   ... 29 more


Top
 Profile  
 
 Post subject:
PostPosted: Wed May 07, 2008 3:31 pm 
Red Hat Associate
Red Hat Associate

Joined: Mon Aug 16, 2004 11:14 am
Posts: 253
Location: Raleigh, NC
I'm not really sure what the issue is here but it looks like you're using JBoss AS and I know that JBoss' handling of JPA in WAR files is not fully baked (it may be in AS5 beta). I'd take this over to the JBoss EJB3 forum.

You could also try packaging your PU into a jar and putting the META-INF/persistence.xml in there. I've had to play with this for hours to make different things work. EAR files are pretty well supported but WAR files are tricky in AS4.x.

Sorry I don't have a definitive answer. Are you trying to ship hibernate/ann/em with your WAR file? If so, try taking that out. If you're on an EE5 container, you just need your entities and persistence.xml and the container should do the rest.

_________________
Chris Bredesen
Senior Software Maintenance Engineer, JBoss


Top
 Profile  
 
 Post subject: question
PostPosted: Sun May 11, 2008 9:02 am 
Senior
Senior

Joined: Sun Jun 11, 2006 10:41 am
Posts: 164
Hi,
where inside the WAR is your persistence.xml? Note what JPA spec says about any class paths - relative to the folder containing persistence.xml...


Top
 Profile  
 
Display posts from previous:  Sort by  
Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 3 posts ] 

All times are UTC - 5 hours [ DST ]


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum

Search for:
© Copyright 2014, Red Hat Inc. All rights reserved. JBoss and Hibernate are registered trademarks and servicemarks of Red Hat, Inc.