我无法在Resteasy中注入cdi bean。在调试时,它似乎总是显示空指针异常。即以下代码中的'jaxRsImpl'始终为null。我试图在jboss eap 6.2上运行
@Path("/jaxrs-service")
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON)
public class JAXRSService {
@Inject
private JAXRSImpl jaxRsImpl;
@POST
@Path("/authenticate")
@Consumes(MediaType.APPLICATION_JSON)
public Response authenticate(Credentials user) {
return jaxRsImpl.authenticate(user);
}
}
我打算注入的课程是
@RequestScoped
public class JAXRSImpl {
public Response authenticate(Credentials user) {
// Some logic
}
}
由于我的应用程序是web,所以我在WEB-INF文件夹中添加了beans.xml
My Initialiser看起来像
@ApplicationPath("/rest")
public class JAXRSInitializer extends Application {
private Set<Object> singletons = new HashSet<Object>();
private Set<Class<?>> classes = new HashSet<Class<?>>();
public JAXRSInitializer() {
singletons.add(new JAXRSService());
classes.add(JAXRSImpl.class);
}
@Override
public Set<Class<?>> getClasses() {
return classes;
}
@Override
public Set<Object> getSingletons() {
return singletons;
}
}
答案 0 :(得分:5)
您需要确保您的应用程序能够识别CDI。以下是一些关键要求:
Application
实现。beans.xml
@RequestScoped
第一个项目符号是密钥,因为您手动实例化服务,而不是让容器找到它们。