我必须在ContextCacheRefresh Web服务上注入initApplicationContext bean,但是不成功的initApplicationContext值总是为null。有没有人知道如何处理它?</ p>
@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
) { ......
答案 0 :(得分:2)
使用@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端点?