从Web服务访问FacesContext

时间:2010-04-21 15:43:50

标签: java web-services jsf

我正在开发一个由我编写的客户调用的Web服务。在Web服务中,我需要使用应用程序范围的对象,这样可以减轻系统上应用程序的负担。我已经实现了我的应用程序范围的对象,如this question所示。

我可以在jsf页面中使用我的对象,没有问题如下。

MyObject mo = (MyObject) FacesContext.getCurrentInstance().getExternalContext().getApplicationMap().get("MyObjectsName");

但是当它在Web服务请求中使用时FacesContext.getCurrentInstance()返回null。有没有办法在Web服务中使用FacesContext。

1 个答案:

答案 0 :(得分:6)

它为null,因为Web服务不是来自Faces Servlet。这是应该的方式,因为Web服务与JSF无关。

如果您使用的是jax-ws实现,可以使用:

@Resource
WebServiceContext context;

这将注入WebServiceContext,您可以通过该注释:

ServletContext servletContext = (ServletContext) 
     context.getMessageContext().get(MessageContext.SERVLET_CONTEXT);

拥有ServletContext,您可以访问应用程序范围对象。