0
my  sessionfacade class

         package com.entity;

         import javax.ejb.Stateless;
         import javax.persistence.EntityManager;
         import javax.persistence.PersistenceContext;

         @Stateless
         public class UsersFacade extends AbstractFacade<Users> implements UsersFacadeLocal 
         {
         @PersistenceContext(unitName = "My_communityPU")
         private EntityManager em;

         @Override
         protected EntityManager getEntityManager() {
         return em;
         }

         public UsersFacade() {
         super(Users.class);
         }

         }



my managed bean class

        package com.jsf;

        import com.entity.Users;
        import com.entity.UsersFacadeLocal;
        import javax.inject.Named;
        import javax.enterprise.context.SessionScoped;
        import java.io.Serializable;
        import java.util.List;
        import java.util.Map;
        import javax.annotation.ManagedBean;
        import javax.ejb.EJB;
        import javax.faces.context.ExternalContext;
        import javax.faces.context.FacesContext;

        @Named(value = "loginMB")
        @ManagedBean
        @SessionScoped
        public class LoginMB implements Serializable {
        @EJB
        private UsersFacadeLocal usersFacade;



        protected Users user;
        protected List<Users> lusers;
        protected String username;    
        protected String password;

           public LoginMB() {

        lusers=usersFacade.findAll();


           }
          }

mangedbean への ejb インジェクションが機能しない理由がわかりません。findall(); を呼び出すと、null ポインター例外が発生します。usersFacade を使用したメソッド私は、グラスフィッシュ サーバーを使用して netbeans ide に取り組んでいます。私はjsfでjpaを学んでいます。どこが間違っているのか教えてください

4

1 に答える 1

7

コンテナーは、マネージド Bean をインスタンス化した後にのみ EJB を注入します。@PostConstruct アノテーションを使用し、そこで EJB を使用します。注釈付きのメソッドは、注入後に呼び出されます。

于 2013-03-18T08:57:15.163 に答える