22
When you call the method FacesContext.getCurrentInstance() it will return the current thread but in case of P.S.V.M there will be no thread running in application context. So you get a NPE.
Better use something like this:
public String checker() {
SessionFactory factory = HibernateUtil.getSessionFactory();
Session session = factory.getCurrentSession();
session.beginTransaction();
Query q = session.createQuery("from UserLogin where UserId='"
+ uid.getUserId() + "'and Pswd='" + uid.getPswd()
+ "'and RoleId='" + uid.getRoleId() + "'");
setUid((UserLogin) q.uniqueResult());
System.out.println("upto here every thing is workind properly");
if (uid != null) {
FacesContext context = FacesContext.getCurrentInstance();
HttpServletRequestrequest = (HttpServletRequest) context
.getExternalContext().getRequest();
HttpSession appsession = request.getSession(true);
if (appsession.isNew() == false) {
appsession.invalidate();
appsession = request.getSession(true);
}
context.getExternalContext().getSessionMap().put("userbean", uid);
session.close();
return uid.getRoleId();
} else
return "invalid";
}
and put it into a session bean. You can use the code to validate users.