【问题标题】:Accessing FacesContext from Web Service从 Web 服务访问 FacesContext
【发布时间】:2011-02-10 16:21:24
【问题描述】:

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

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

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

但是当涉及到在 Web 服务请求中使用它时,FacesContext.getCurrentInstance() 返回 null。有什么方法可以在 Web 服务中使用 FacesContext。

【问题讨论】:

  • 您的网络服务基于什么 API?它是否在同一个容器/上下文中运行?
  • 我在使用 jax-ws,但我没有考虑容器。

标签: java web-services jsf


【解决方案1】:

它为空,因为 Web 服务不通过 Faces Servlet。这就是应该的方式,因为 Web 服务与 JSF 无关。

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

@Resource
WebServiceContext context;

这将注入WebServiceContext,您可以:

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

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

【讨论】:

  • 如果我使用 JAX RS 并且我想访问 viewscoped bean,有没有办法实现,Bozho?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多