Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/353.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在RESTWeb服务java上注入应用程序范围bean_Java_Rest_Jakarta Ee_Jax Rs - Fatal编程技术网

如何在RESTWeb服务java上注入应用程序范围bean

如何在RESTWeb服务java上注入应用程序范围bean,java,rest,jakarta-ee,jax-rs,Java,Rest,Jakarta Ee,Jax Rs,我必须在ContextCacheRefresh web服务上注入initApplicationContext bean,但不成功,initApplicationContext值始终为null。有人知道该怎么处理吗 @ManagedBean(name = "initApplicationContext", eager = true) @ApplicationScoped public class InitApplicationContext { ..........

我必须在ContextCacheRefresh web服务上注入initApplicationContext bean,但不成功,initApplicationContext值始终为null。有人知道该怎么处理吗

@ManagedBean(name = "initApplicationContext", eager = true)
@ApplicationScoped
   public class InitApplicationContext {
             .......................
               }
和web服务

  @Path("/serviceContext")
  public class ContextCacheRefresh  {

   @ManagedProperty(value = "#{initApplicationContext}")
    private  InitApplicationContext initApplicationContext;

  @GET
  @Path("/refreshContext")

 public Response refreshUserListOn(@QueryParam("param") String param
  ) { ......

您将无法使用
@ManagedProperty
让JSF将资源注入非JSF上下文。你的选择是

  • 将托管bean转换为使用CDI注释(
    @Named
    来声明托管bean和
    @Inject
    ,而不是您现在使用的JSF注释

  • 只需使用以下命令从普通servlet上下文中提取bean:

    //inject the servlet context
    @javax.ws.rs.core.Context 
    ServletContext servletContext
    
    public InitApplicationContext getInitContext(){
        return (InitApplicationContext)servletContext.getAttribute("initApplicationContext");
    }
    


  • 在我看来,您的工作方向似乎有点棘手。为什么您的web应用程序一开始就关注RESTful端点?

    这是JSF应用程序吗?如果不是,您应该使用
    @Inject
    是的,它是JSF应用程序不是真的:您试图将JSF资源注入到非JSF上下文中;不起作用。使用
    @Named
    注释,而不是
    @ManagedBean
    ,以及
    @Inject
    将其注入restful服务。托管bean只是jsf页面的控制器。非常感谢,它可以工作!我正在开发分离的多模块web应用程序,所有模块都使用相同的db实例。为此,我必须将一个模块的更改反映到其他模块我选择使用web服务。