2010-12-02 4 views
3

Я не могу перехватить исключения, такие как NoResultException или EJBException в моем проекте java ee 6. Есть ли что-то, что я делаю неправильно? Я поймал исключения за пределами контейнера EJB, но это мой первый раз с использованием EJB. Благодарю.Почему я не могу исключить исключения EJB?

@Stateless 
public class UserEJB { 

    @PersistenceContext 
    EntityManager em; 

    public String getUserName(User user) { 
     return user.getName(); 
    } 

    public User fetchUserByEmail(String email) { 

     User user = em.createNamedQuery("User.findByEmail", User.class).setParameter("email", email).getSingleResult(); 
     return user; 
    } 

    public User fetchUserById(int id) { 
     return em.createNamedQuery("User.findByUserId", User.class).setParameter("userId", id).getSingleResult(); 
    } 

    public List<User> fetchAllUsers() { 
     return em.createNamedQuery("User.findAll", User.class).getResultList(); 
    } 
} 

@Named(value = "userController") 
@RequestScoped 
public class UserController { 

    private User user = new User(); 
    @EJB 
    UserEJB userEJB; 
    @Inject 
    SecurityController securityController; 

    public UserController() { 
    } 

    public void login(ActionEvent event) { 

     try { 

      User userLogin = userEJB.fetchUserByEmail(user.getEmail()); 

     } catch (Exception e) { 

     } 

     if (userLogin.getPassword().equals(user.getPassword())) { 
      securityController.setIsLoggedIn(true); 
      securityController.setIsAdmin(true); 
      securityController.setUser(user); 
     } 
    } 

    /** 
    * @return the user 
    */ 
    public User getUser() { 
     return user; 
    } 

    /** 
    * @param user the user to set 
    */ 
    public void setUser(User user) { 
     this.user = user; 
    } 
+0

Как вы знаете, что исключение не выбрасывается, когда вы ловите «Исключение» и не регистрируете его? catch (Exception e) {} Попробуйте написать `e.printStacktrace()` – 2010-12-06 13:40:03

+0

. Можете ли вы добавить трассировку стека из журнала стеклянной рыбы? – 2010-12-18 04:55:11

ответ

1

Что делать, если вы ввели два кода System.out.printlns? Один в обработчике исключений и один прямо перед оператором if. Что вы получаете?

Посмотрев на код, я бы сказал, что вы сможете поймать исключение, которое должно быть исключением JPA, заключенным в EJB.

Смежные вопросы