Java JSF托管属性注入REST资源内部为空

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

我有一个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上下文没有概念

有关进一步澄清,请参阅


作为解决方案,考虑使用<代码> @ EJB控制器,并通过<代码> @ EJB注释注销。否则,请解释此设计背后的业务逻辑。

这是有道理的,而且我刚刚意识到@ManagedBean注释将被弃用,取而代之的是CDI注入。所以我必须回顾一下这个项目目前的结构。