package example.web; import example.entity.*; import example.ejb.interfaces.UserCredentialManager; import javax.ejb.EJB; import javax.servlet.*; import javax.servlet.http.*; import javax.persistence.PersistenceContext; import javax.persistence.EntityManager; import javax.naming.InitialContext; import javax.annotation.Resource; import javax.transaction.UserTransaction; import java.io.*; @PersistenceContext(name="persistence/EM1", unitName="pu1") public class ReportServlet extends HttpServlet { // inject an EJB. @EJB // reference name and type inferred from variable private UserCredentialManager ucm; // inject a user transaction object. @Resource private UserTransaction utx; public void service (HttpServletRequest req , HttpServletResponse resp) throws ServletException, IOException { try { resp.setContentType("text/html"); PrintWriter out = resp.getWriter(); out.println(" New User Registartion " + " "); EntityManager em = (EntityManager) new InitialContext().lookup( "java:comp/env/persistence/EM1"); System.out.println("em = " + em); System.out.println("Before utx.begin(), delegate = " + em.getDelegate()); utx.begin(); // begin the tx before calling the ejb... System.out.println("After utx.begin(), delegate = " + em.getDelegate()); String name = req.getParameter("name"); UserCredential user = ucm.lookupUser(name); if(user == null) { throw new ServletException("No such user."); } System.out.println("Is managed object: " + em.contains(user)); // Since UserCredential entity returned by the EJB is still // a managed instance, we can safely fetch the lzily populated // field called loginAttempts. out.println("Login history for user called [" + user.getName() + "] is given below:
"); for(LoginAttempt attempt : user.getLoginAttempts()) { if(attempt.isSuccessful()) { out.println("Successfully logged in at " + attempt.getLoginTime()+"
"); } else { out.println("Failed to log in at " + attempt.getLoginTime()+"
"); } } utx.commit(); out.println(" "); } catch (Exception nse) { throw new ServletException(nse); } } public void init( ServletConfig config) throws ServletException { super.init(config); } }