存储在请求范围内 - 从SOAPHandler到@Producer

时间:2012-10-30 14:52:51

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

我需要在运行时根据soap标头的内容动态地将EntityManagers分配给我的bean。我的计划是使用SOAPHandler从头中提取信息,然后将其存储在请求范围中。我有一个方法@Producer,我设想访问这个请求范围,检查存储的变量,并返回适当的实体管理器。

(EntityManagers引用具有相同结构但不同数据的不同DB)。

我的问题是这个:如何访问请求上下文以存储名称(在SOAPHandler端),然后再次检索请求上下文以检索名称?

任何帮助表示感谢。

1 个答案:

答案 0 :(得分:2)

回答我自己的问题:

将其粘贴在SOAPMessageContext中,如下所示:

  

context.put(“VARIABLE_KEY”,whateverIWantObject);

     

context.setScope(“VARIABLE_KEY”,Scope.APPLICATION);

(Scope.APPLICATION很重要)。

然后,您可以在服务层中从Web服务上下文中获取消息上下文,您可以将其注入;然后消息上下文将包含您的对象:

  

@Resource WebServiceContext webContext;

     

ObjectType theObject =   (ObjectType)webContext.getMessageContext()。get(“VARIABLE_KEY”);