gpt4 book ai didi

java - 如何在 rest web 服务 java 上注入(inject)应用程序范围 bean

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:21:38 26 4
gpt4 key购买 nike

我必须在 ContextCacheRefresh Web 服务上注入(inject) initApplicationContext bean,但没有成功,initApplicationContext 值始终为空。有人知道如何处理它吗?

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

和网络服务

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

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

@GET
@Path("/refreshContext")

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

最佳答案

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

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

  2. 只需使用以下命令从普通 servlet 上下文中拉取 bean:

    //inject the servlet context
    @javax.ws.rs.core.Context
    ServletContext servletContext

    public InitApplicationContext getInitContext(){
    return (InitApplicationContext)servletContext.getAttribute("initApplicationContext");
    }

在我看来,您的工作方向有点不靠谱。为什么您的 Web 应用程序一开始就关注您的 RESTful 端点?

关于java - 如何在 rest web 服务 java 上注入(inject)应用程序范围 bean,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28308529/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com