[英]Unable to Inject CDI Bean with rest Easy
我无法在Resteasy中注入CDI豆。 在调试时,它似乎总是显示空指针异常。 即以下代码中的“ jaxRsImpl”始终为空。 我正在尝试在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
我的初始化器看起来像
@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;
}
}
您需要确保您的应用程序支持CDI。 以下是一些关键要求:
Application
实现。 beans.xml
@RequestScoped
第一个项目符号是关键,因为您是手动实例化服务,而不是允许容器找到它们。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.