package example; import javax.annotation.Resource; import javax.persistence.*; import javax.servlet.*; import javax.servlet.http.*; import javax.transaction.NotSupportedException; import javax.transaction.RollbackException; import javax.transaction.UserTransaction; import java.io.*; public class RegistrationServlet extends HttpServlet { // This injects the default entity manager factory @PersistenceUnit private EntityManagerFactory emf; // This injects a user transaction object. @Resource private UserTransaction utx; public void service (HttpServletRequest req , HttpServletResponse resp) throws ServletException, IOException { try { // begin a tx using utx b'cos we are using JTA EM. utx.begin(); } catch (Exception e) { throw new ServletException(e); } // create an entity manager in service() so that only // this thread uses it. // More over, we create EM after utx.begin(), so that we don't // have to call em.joinTransaction(). EntityManager em = emf.createEntityManager(); try { resp.setContentType("text/html"); PrintWriter out = resp.getWriter(); out.println("