我想使用基于SOAP的@WebService
公开我现有JEE7 Web应用程序的一些功能。可以/应该这个服务注入我的应用程序的CDI bean?鉴于没有@RequestScoped
标识当前会话或请求,@SessionScoped
,@ApplicationScoped
和HttpServletRequest
CDI bean的行为如何?即。他们如何被抬起头来?
我的观察:
@ApplicationScoped
似乎按预期工作@SessionScoped
似乎表现得像请求范围,因为每次调用Web服务时都会创建一个新bean,但随后可以从其他bean访问它直到服务完成@RequestScoped
bean似乎没有被查找属性 - 例如。如果我的webservice注入了两个@RequestScoped
bean,那么其中一个注入另一个bean,就会创建一个新实例,而不是第一个注入我的想法是使用@Dependent
注释使我的会话bean在注入我的@WebService
时表现得像请求bean,但由于上面提到的请求范围行为,这不起作用。我可以直接使用我的@SessionSoped
bean,但我担心内存开销,因为将为每个Web服务请求创建一个新bean,然后持续大约30分钟左右,而不是服务完成后销毁。
任何澄清或想法将不胜感激!