我正在开发一个由我编写的客户调用的Web服务。在Web服务中,我需要使用应用程序范围的对象,这样可以减轻系统上应用程序的负担。我已经实现了我的应用程序范围的对象,如this question所示。
我可以在jsf页面中使用我的对象,没有问题如下。
MyObject mo = (MyObject) FacesContext.getCurrentInstance().getExternalContext().getApplicationMap().get("MyObjectsName");
但是当它在Web服务请求中使用时FacesContext.getCurrentInstance()返回null。有没有办法在Web服务中使用FacesContext。
答案 0 :(得分:6)
它为null,因为Web服务不是来自Faces Servlet。这是应该的方式,因为Web服务与JSF无关。
如果您使用的是jax-ws实现,可以使用:
@Resource
WebServiceContext context;
这将注入WebServiceContext
,您可以通过该注释:
ServletContext servletContext = (ServletContext)
context.getMessageContext().get(MessageContext.SERVLET_CONTEXT);
拥有ServletContext
,您可以访问应用程序范围对象。