【问题标题】:Storing in request scope - from SOAPHandler through to @Producer存储在请求范围内 - 从 SOAPHandler 到 @Producer
【发布时间】:2012-10-30 14:52:50
【问题描述】:
我需要在运行时根据soap 标头的内容将EntityManagers 动态分配给我的bean。我的计划是使用 SOAPHandler 从标头中提取信息,然后将其存储在请求范围内。我有一个方法@Producer,我设想访问这个请求范围,检查存储的变量,并返回适当的实体管理器。
(EntityManagers指的是不同的DB,结构相同,但数据不同)。
我的问题是这样的:如何访问请求上下文以存储名称(在 SOAPHandler 端),然后再次检索请求上下文以检索名称?
任何帮助表示赞赏。
【问题讨论】:
标签:
java
web-services
jakarta-ee
jax-ws
cdi
【解决方案1】:
回答我自己的问题:
粘贴在SOAPMessageContext中,如下:
context.put("VARIABLE_KEY", 不管IWantObject );
context.setScope("VARIABLE_KEY", Scope.APPLICATION);
(Scope.APPLICATION 很重要)。
在服务层中,您可以从 Web 服务上下文中获取消息上下文,您可以将其注入;然后消息上下文将包含您的对象:
@Resource WebServiceContext webContext;
ObjectType theObject =
(ObjectType) webContext.getMessageContext().get("VARIABLE_KEY");