从Web服务访问FacesContext

scr*_*ter 5 java jsf web-services

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

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

MyObject mo = (MyObject) FacesContext.getCurrentInstance().getExternalContext().getApplicationMap().get("MyObjectsName");
Run Code Online (Sandbox Code Playgroud)

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

Boz*_*zho 6

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

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

@Resource
WebServiceContext context;
Run Code Online (Sandbox Code Playgroud)

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

ServletContext servletContext = (ServletContext) 
     context.getMessageContext().get(MessageContext.SERVLET_CONTEXT);
Run Code Online (Sandbox Code Playgroud)

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