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);
}
}