当JAX-WS Web服务访问时,CDI bean的行为如何?

时间:2014-10-28 11:49:17

标签: java web-services jsf jax-ws cdi

我想使用基于SOAP的@WebService公开我现有JEE7 Web应用程序的一些功能。可以/应该这个服务注入我的应用程序的CDI bean?鉴于没有@RequestScoped标识当前会话或请求,@SessionScoped@ApplicationScopedHttpServletRequest CDI bean的行为如何?即。他们如何被抬起头来?

我的观察:

  • @ApplicationScoped似乎按预期工作
  • @SessionScoped似乎表现得像请求范围,因为每次调用Web服务时都会创建一个新bean,但随后可以从其他bean访问它直到服务完成
  • @RequestScoped bean似乎没有被查找属性 - 例如。如果我的webservice注入了两个@RequestScoped bean,那么其中一个注入另一个bean,就会创建一个新实例,而不是第一个注入

我的想法是使用@Dependent注释使我的会话bean在注入我的@WebService时表现得像请求bean,但由于上面提到的请求范围行为,这不起作用。我可以直接使用我的@SessionSoped bean,但我担心内存开销,因为将为每个Web服务请求创建一个新bean,然后持续大约30分钟左右,而不是服务完成后销毁。

任何澄清或想法将不胜感激!

0 个答案:

没有答案