Hibernate Jboss,在安全拦截器中使用企业bean

Hibernate Jboss,在安全拦截器中使用企业bean,hibernate,jboss,ejb,resteasy,interceptor,Hibernate,Jboss,Ejb,Resteasy,Interceptor,我是J2EE新手,我有一个基于Rest的web服务的jboss实现。我不太熟悉jboss中的所有框架等。为了安全起见,我实现了一个SecurityInterceptor,在这里我得到一个NullPointerException。 问题在于kryptoManager.getKryptoInformation();调用,因为kryptoManager为null @EJB KryptoManager kryptoManager; @Override public boolean accept(Cla

我是J2EE新手,我有一个基于Rest的web服务的jboss实现。我不太熟悉jboss中的所有框架等。为了安全起见,我实现了一个SecurityInterceptor,在这里我得到一个NullPointerException。 问题在于kryptoManager.getKryptoInformation();调用,因为kryptoManager为null

@EJB
KryptoManager kryptoManager;

@Override
public boolean accept(Class c, Method method) {
    if (c == null || method == null) return false;
    //class implementing rest service
    return method.getName().equals("restService");

}

@Override
public ServerResponse preProcess(HttpRequest request, ResourceMethod method)
        throws Failure, WebApplicationException {
    ServerResponse response = null;

    String key = kryptoManager.getKryptoInformation();

    ...

    if (error) {
        response = new ServerResponse(LOGINURL, 403, new Headers<Object>());
    }


    return response;
}
KryptoDAO看起来像:

@Stateless
public class KryptoManager {

    @EJB
    private KryptoDAO kryptoDAO;

    public KryptoBean getKryptoInformation() {
        return kryptoDAO.getKryptoInformation();
    }

}
@Stateless
public class KryptoDAO {

     @PersistenceContext(unitName = "db", type = PersistenceContextType.TRANSACTION)
     private EntityManager entityManager;


     public KryptoBean getKryptoInformation() {
         Query query = entityManager.createQuery("SELECT k FROM KryptoBean k");
         return (KryptoBean) query.getResultList().get(0);

     }
}
@XmlRootElement
@Table(name = "krypto")
@Entity(name = "KryptoBean")
public class KryptoBean {

    @Id
    @Column(name = "idkrypto")
    private int idkrypto;

    @Column (name = "hmackey")
    private String hmackey;

    public int getIdkrypto() {
        return idkrypto;
    }

    public void setIdkrypto(int idkrypto) {
        this.idkrypto = idkrypto;
    }

    public String getHmackey() {
        return hmackey;
    }

    public void setHmackey(String hmackey) {
        this.hmackey = hmackey;
    }

}
@ApplicationPath( "/rest" )
public class JaxRsActivator extends Application
{

    @Override
    public Set<Class<?>> getClasses() {
        // TODO Auto-generated method stub
        return super.getClasses();
    }

    @Override
    public Set<Object> getSingletons() {
        // TODO Auto-generated method stub
        return super.getSingletons();
    }

}
Bean类看起来像:

@Stateless
public class KryptoManager {

    @EJB
    private KryptoDAO kryptoDAO;

    public KryptoBean getKryptoInformation() {
        return kryptoDAO.getKryptoInformation();
    }

}
@Stateless
public class KryptoDAO {

     @PersistenceContext(unitName = "db", type = PersistenceContextType.TRANSACTION)
     private EntityManager entityManager;


     public KryptoBean getKryptoInformation() {
         Query query = entityManager.createQuery("SELECT k FROM KryptoBean k");
         return (KryptoBean) query.getResultList().get(0);

     }
}
@XmlRootElement
@Table(name = "krypto")
@Entity(name = "KryptoBean")
public class KryptoBean {

    @Id
    @Column(name = "idkrypto")
    private int idkrypto;

    @Column (name = "hmackey")
    private String hmackey;

    public int getIdkrypto() {
        return idkrypto;
    }

    public void setIdkrypto(int idkrypto) {
        this.idkrypto = idkrypto;
    }

    public String getHmackey() {
        return hmackey;
    }

    public void setHmackey(String hmackey) {
        this.hmackey = hmackey;
    }

}
@ApplicationPath( "/rest" )
public class JaxRsActivator extends Application
{

    @Override
    public Set<Class<?>> getClasses() {
        // TODO Auto-generated method stub
        return super.getClasses();
    }

    @Override
    public Set<Object> getSingletons() {
        // TODO Auto-generated method stub
        return super.getSingletons();
    }

}
JAXSActivator看起来像:

@Stateless
public class KryptoManager {

    @EJB
    private KryptoDAO kryptoDAO;

    public KryptoBean getKryptoInformation() {
        return kryptoDAO.getKryptoInformation();
    }

}
@Stateless
public class KryptoDAO {

     @PersistenceContext(unitName = "db", type = PersistenceContextType.TRANSACTION)
     private EntityManager entityManager;


     public KryptoBean getKryptoInformation() {
         Query query = entityManager.createQuery("SELECT k FROM KryptoBean k");
         return (KryptoBean) query.getResultList().get(0);

     }
}
@XmlRootElement
@Table(name = "krypto")
@Entity(name = "KryptoBean")
public class KryptoBean {

    @Id
    @Column(name = "idkrypto")
    private int idkrypto;

    @Column (name = "hmackey")
    private String hmackey;

    public int getIdkrypto() {
        return idkrypto;
    }

    public void setIdkrypto(int idkrypto) {
        this.idkrypto = idkrypto;
    }

    public String getHmackey() {
        return hmackey;
    }

    public void setHmackey(String hmackey) {
        this.hmackey = hmackey;
    }

}
@ApplicationPath( "/rest" )
public class JaxRsActivator extends Application
{

    @Override
    public Set<Class<?>> getClasses() {
        // TODO Auto-generated method stub
        return super.getClasses();
    }

    @Override
    public Set<Object> getSingletons() {
        // TODO Auto-generated method stub
        return super.getSingletons();
    }

}
@ApplicationPath(“/rest”)
公共类JAXRActivator扩展了应用程序
{
@凌驾
公共集