@EJB not working?
nomike Oct 5, 2006 9:07 AM
/** * @author michael * @version 0.1.0.0 05.10.2006 */ package at.tac.ra.ng.ejb.bl.login; import at.tac.ra.ng.ejb.beans.user.User; import at.tac.ra.ng.ejb.entities.UserEntity; import at.tac.ra.ng.ejb.entities.LanguageEntity; import at.tac.ra.ng.common.HashGen; import at.tac.ra.ng.common.SysConfig; import javax.ejb.Stateless; import javax.ejb.Remote; import javax.ejb.EJB; import javax.persistence.PersistenceException; import javax.persistence.PersistenceContext; import javax.persistence.EntityManager; import java.util.Calendar; import java.security.NoSuchAlgorithmException; @Stateless(name = "LoginEJB") @Remote(Login.class) public class LoginBean implements Login { @PersistenceContext EntityManager em; @EJB User userBean; public loginStatus authenticateUser(String userLogin, char[] password) { if (userBean.findByUserLogin(userLogin).size() <= 0) { return loginStatus.USERLOGIN_DOES_NOT_EXIST; } UserEntity user; try { user = userBean.findByUserLoginEnabled(userLogin); } catch (PersistenceException e) { return loginStatus.NO_ENABLED_USER_FOUND_WITH_THIS_USERLOGIN; } Calendar c = Calendar.getInstance(); if ((user.getReactivationTime() != null) && (c.getTime().getTime() < user.getReactivationTime().getTime())) { //Account temporary locked return loginStatus.ACCOUNT_TEMPORARY_LOCKED; } else { // Account not temporary locked try { if (user.getPassword().equals(HashGen.do_checksum(String.valueOf(password), "SHA-1"))) { // Password is correct user.setLoginTrials(0); user.setReactivationTime(null); em.flush(); return loginStatus.SUCCESS; } else { // Password is wrong user.setLoginTrials(user.getLoginTrials() + 1); if (user.getLoginTrials() > SysConfig.getAllowedLoginTrials()) { Calendar c2 = Calendar.getInstance(); c.add(Calendar.MINUTE, SysConfig.getLoginLockTime()); user.setReactivationTime(c.getTime()); } em.flush(); return loginStatus.WRONG_PASSWORD; } } catch (NoSuchAlgorithmException e) { e.printStackTrace(); return loginStatus.UNKNOWN_ERROR; } } } public UserEntity getUser(String userLogin) { return userBean.findByUserLoginEnabled(userLogin); } public LanguageEntity getLanguage(UserEntity user, Integer languageID) { if (languageID == null) { em.persist(user); return user.getLanguage(); } else { return em.find(LanguageEntity.class, languageID); } } }
The above code produces a NullPointerException on "If (userBean.findByUserLogin(userLogin).size() <= 0)" because userBean is null.
Shouldn't a reference to UserEJB be injected there or am I missing something?
nomike aka Michael Postmann