1 Reply Latest reply on Jul 27, 2005 11:56 AM by Aaron

    Cannot Load Hibernate object

    Aaron Novice

      Hibernate3.0, JBoss4.0.2, JDK-1.4.2_01

      I have two files. techdesk.har and techdesk.war. The har file has only three classes made persistent, and deploys correctly, and the SessionFactory bound correctly in JNDI:

      2005-07-26 22:40:52,511 INFO [org.jboss.hibernate.jmx.Hibernate] SessionFactory successfully built and bound into JNDI [java:/TechDesk/SessionFactory]


      However, when I access my servlet with code to load a class from hibernate, nothing comes back (not even errors or exceptions). I even have ShowSQL=true in my hibernate parameters, but no SQL statements were output'd. Here is the log from when I access the servlet:

      2005-07-26 22:30:30,557 DEBUG [org.hibernate.impl.SessionFactoryObjectFactory] JNDI lookup: TechDesk/SessionFactory
      2005-07-26 22:30:30,557 DEBUG [org.hibernate.impl.SessionFactoryObjectFactory] lookup: uid=8a8be5ef0555af6a010555af8d9e0001
      2005-07-26 22:30:30,557 DEBUG [org.hibernate.jdbc.JDBCContext] no active transaction, could not register Synchronization
      2005-07-26 22:30:30,557 DEBUG [org.hibernate.impl.SessionImpl] opened session at timestamp: 4597479139561472
      2005-07-26 22:30:30,567 DEBUG [org.hibernate.transaction.JTATransaction] begin
      2005-07-26 22:30:30,567 DEBUG [org.hibernate.transaction.JTATransaction] Looking for UserTransaction under: UserTransaction
      2005-07-26 22:30:30,567 DEBUG [org.hibernate.transaction.JTATransaction] Obtained UserTransaction
      2005-07-26 22:30:30,567 DEBUG [org.hibernate.transaction.JTATransaction] Began a new JTA transaction
      2005-07-26 22:30:30,577 DEBUG [org.hibernate.jdbc.JDBCContext] successfully registered Synchronization
      2005-07-26 22:30:30,697 DEBUG [org.hibernate.transaction.JTATransaction] commit
      2005-07-26 22:30:30,697 DEBUG [org.hibernate.transaction.CacheSynchronization] transaction before completion callback
      2005-07-26 22:30:30,697 DEBUG [org.hibernate.transaction.CacheSynchronization] automatically flushing session
      2005-07-26 22:30:30,697 DEBUG [org.hibernate.impl.SessionImpl] automatically flushing session
      2005-07-26 22:30:30,697 DEBUG [org.hibernate.jdbc.JDBCContext] before transaction completion
      2005-07-26 22:30:30,697 DEBUG [org.hibernate.impl.SessionImpl] before transaction completion
      2005-07-26 22:30:30,697 DEBUG [org.hibernate.transaction.CacheSynchronization] transaction after completion callback, status: 3
      2005-07-26 22:30:30,697 DEBUG [org.hibernate.jdbc.JDBCContext] after transaction completion
      2005-07-26 22:30:30,697 DEBUG [org.hibernate.impl.SessionImpl] after transaction completion
      2005-07-26 22:30:30,697 DEBUG [org.hibernate.transaction.CacheSynchronization] automatically closing session
      2005-07-26 22:30:30,697 DEBUG [org.hibernate.impl.SessionImpl] automatically closing session
      2005-07-26 22:30:30,697 DEBUG [org.hibernate.impl.SessionImpl] closing session
      2005-07-26 22:30:30,697 DEBUG [org.hibernate.transaction.JTATransaction] Committed JTA UserTransaction
      2005-07-26 22:30:36,536 DEBUG [org.hibernate.jdbc.JDBCContext] running Session.finalize()


      Here is a snip of the code that calls the hibernate lookup:

      Transaction tx = null;
       Session session = null;
       try {
       InitialContext ctx = new InitialContext();
       SessionFactory factory = (SessionFactory) ctx
       .lookup("java:/TechDesk/SessionFactory");
       session = factory.openSession();
       } catch (NamingException e) {
       // TODO Auto-generated catch block
       e.printStackTrace();
       }
      
       PrintWriter out = resp.getWriter();
       tx = session.beginTransaction();
       try {
       List results = session.createCriteria(Ticket.class).list();
       for (Iterator i = results.iterator(); i.hasNext();) {
       Ticket ticket = (Ticket) i.next();
       out.println(ticket.getId() + " " + ticket.getProblem());
       if (ticket.getOwner() != null) {
       out.println(ticket.getOwner().getUsername());
       } else {
       out.println("No Owner");
       }
       }
       } catch (HibernateException e) {
       e.printStackTrace();
       } finally {
       tx.commit();
       }
      


      Can anyone point out what I'm doing wrong? I've been staring at this code for too long, and need a fresh set of (experienced) eyes. This code works correctly outside of JBoss and Tomcat using a POJO.

      Thanks so much!
      --Aaron