Java JSF托管属性注入REST资源内部为空
我有一个REST资源类(即侦听来自web的传入REST连接的类),它需要访问托管bean库控制器。 然而,在调用时,我得到一个空指针异常Java JSF托管属性注入REST资源内部为空,java,jsf,javabeans,Java,Jsf,Javabeans,我有一个REST资源类(即侦听来自web的传入REST连接的类),它需要访问托管bean库控制器。 然而,在调用时,我得到一个空指针异常 @ApplicationPath("webresources") @Path("/record") @Stateless public class RecordResource { @ManagedProperty(value = "#{libraryController}") // this references the @ManagedBean n
@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上下文没有概念
有关进一步澄清,请参阅
作为解决方案,考虑使用<代码> @ EJB控制器,并通过<代码> @ EJB注释注销。否则,请解释此设计背后的业务逻辑。
这是有道理的,而且我刚刚意识到@ManagedBean注释将被弃用,取而代之的是CDI注入。所以我必须回顾一下这个项目目前的结构。