我有一个没有Spring的jsf 2.0应用程序,我已经实现了一个缓存作为应用程序范围,应该从Rest服务中访问它。现在,我想调用应该检查缓存的其余Web服务,但是当我要访问它时,它始终为null。
我已经尝试Accessing FacesContext from Web Service和这个https://www.mkyong.com/jsf2/how-to-get-servletcontext-in-jsf-2/了,但这对我不起作用。
@ManagedBean(eager=true)
@ApplicationScoped
public class CacheController implements Serializable{
private static final long serialVersionUID = 123L;
private Map<String, Cache> map = new HashMap<String, Cache>();
public Map<String, Cache> getMap() {
return map;
}
public void setMap(Map<String, Cache> map) {
this.map = map;
}
}
@Path("/service")
public class RestService {
@POST
@Path("anlieferung/kennzahlen")
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON)
public String getValueFromCache(String item) throws JSONException, ParseException {
//is always null
CacheController cacheController= (CacheController) getServletContext().getAttribute("cacheController");
//is always null
FacesContext context = FacesContext.getCurrentInstance();
Application application = context.getApplication();
CacheController cacheBean = application.evaluateExpressionGet(context, "#{cacheController}", CacheController.class);
//doSomeStuff and check if the item is in the Cache (CacheController.getMap())
}
}
我在通过jsf应用程序之前已经初始化了缓存,并且它可以正常工作。现在,我希望可以通过FacesContent或ServletContext获取Cache Object,但是它始终为null。我需要创建类似ServletListener的东西吗?有人可以给我一个例子吗?谢谢