Java Mailing List Archive

http://www.junlu.com/

Home » Home (12/2007) » JBoss User Help »

[jboss-user] [Persistence, JBoss/CMP, Hibernate,
 Database] - Using JPA from web tier

scott.stark@jboss.org

2007-07-17


What is the correct way of accessing a Java Persistence unit from the web tier (no EJB session beans)?

I use JBoss 4.2.0.

I can't get the resource injection annotations @PersistenceUnit or @PersistenceContext to work, so I have done like this:

public class MyServletContextListener implements ServletContextListener {
|
|   public void contextInitialized(ServletContextEvent sce) {
|      try {
|         EntityManagerFactory emf = Persistence.createEntityManagerFactory("myunit");
|         sce.getServletContext().setAttribute(EntityManagerFactory.class.getName(), emf);
|      }
|      catch (RuntimeException e) {
|         throw e;
|      }
|      catch (Exception e) {
|         throw new RuntimeException(e);
|      }
|   }
|
|   public void contextDestroyed(ServletContextEvent sce) {
|      EntityManagerFactory emf = (EntityManagerFactory)sce.getServletContext().getAttribute(
|           EntityManagerFactory.class.getName());
|      if (emf != null) {
|         emf.close();
|      }
|   }
|
| }
|

and for each web request I do like this:

    EntityManagerFactory emf = (EntityManagerFactory)context.getAttribute(EntityManagerFactory.class.getName());
|      EntityManager em = emf.createEntityManager();
|      EntityTransaction transaction = em.getTransaction();
|      transaction.begin();
|
|      try {
|      // process the request here...
|         transaction.commit();
|      } catch (Exception e) {
|         transaction.rollback();
|      // log the error
|      } finally {
|         em.close();
|      }
|

It seems to work, but is it thread-safe and does it give reasonable performance?

View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4064944#4064944

Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4064944
_______________________________________________
jboss-user mailing list
jboss-user@(protected)
https://lists.jboss.org/mailman/listinfo/jboss-user
©2008 junlu.com - Jax Systems, LLC, U.S.A.