这是我的bean试图注入一个单独的bean InformationService :
@Path("/information/{name}")
@Stateless (name="InformationResource")
public class InformationResource {
@EJB
private InformationService appService;
@GET
@Produces(MediaType.APPLICATION_XML)
public Information getInfo(@PathParam("name") String name){
return appService.getMap().get(name);
}
@PUT
@POST
@Consumes(MediaType.APPLICATION_XML)
public Information putInfo(@PathParam("name") String name, Information info){
return appService.getMap().put(name,info);
}
@DELETE
public void deleteInfo(@PathParam("name") String name){
appService.getMap().remove(name);
}
}
这是 InformationService 类
@Singleton
public class InformationService {
private Map<String,Information> map;
@PostConstruct
public void init(){
map = new HashMap<String,Information>();
map.put("daud", new Information("B.Tech","Lucknow"));
map.put("anuragh", new Information("M.Sc","Delhi"));
}
public Map<String,Information> getMap(){
return map;
}
}
它是一个非常简单的JAX-RS实现的一部分,我正在JBoss 6.1 Final中作为战争部署。问题是 InformationService 在我发出正确的get请求时抛出NullPointerException。如果我明确初始化 appService ,一切正常。为什么 @EJB 注释不起作用?
答案 0 :(得分:0)
您使用Jersey作为REST实现吗?如果是这样,则不支持开箱即用的EJB注入。
This link提供了有关此内容的更多信息以及解决方案。
答案 1 :(得分:0)
检查你的@Singleton是否是javax.ejb.Singleton。 NPE之前的任何其他例外情况?