  | Mailing List | | Home | | Forum Home | | JBoss - Java Application Server | | Tomcat - JSP/Servlet container | | Struts - A MVC web framework | | iText - An open source PDF Java Library | | JDOM - JDOM XML Parser | | J2EE - A mailing list for Java(tm) 2 Platform, Enterprise Edition | | JSP - A mailing list about Java Server Pages specification and reference | | J2EE Pattern - An interest list for Sun Java Center J2EE Pattern Catalog | | Servlet - A mailing list for discussion about Sun Microsystem's Java Servlet API Technology | |
Struts & Hibernate
|
|
|
  | | | Using Java Persistence from web tier | Using Java Persistence from web tier 2007-07-16 - By Mikael St?ldal
Back 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 @(protected) or @(protected) 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? __ ____ ____ ____ ____ ____ ____ ____ ____ ____ jboss-user mailing list jboss-user@(protected) https://lists.jboss.org/mailman/listinfo/jboss-user
|
|
 |