我必须在 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 上下文。您的选择是
将您的托管 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 端点?
关于java - 如何在 rest web 服务 java 上注入(inject)应用程序范围 bean,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28308529/