我有一个REST资源类(因此,该类侦听来自Web的传入REST连接)需要访问托管的bean库控制器。
但是,在调用时,我得到了一个空指针异常。
@ApplicationPath("webresources")
@Path("/record")
@Stateless
public class RecordResource
{
@ManagedProperty(value = "#{libraryController}") // this references the @ManagedBean named libraryController
private LibraryController libraryController;
@POST
@Path("/upload")
@Consumes(MediaType.MULTIPART_FORM_DATA)
public Response uploadWeb(InputStream inputStream)
{
//Null exception below !
getLibraryController().function();
}
public LibraryController getLibraryController()
{
return libraryController;
}
public void setLibraryController(LibraryController libraryController)
{
this.libraryController = libraryController;
}
}
getter / setter可以,所以我不知道为什么没有调用LibraryController的正确构造函数。
最佳答案
注入失败,因为客户端类不是@ManagedBean
,因此容器在RecordResource
中没有JSF上下文的概念。
参见this question进行进一步的说明。
作为一种解决方法,请考虑使用@EJB
控制器,并通过@EJB
注释将其注入。否则,请解释该设计背后的业务逻辑是什么。