1

我想知道SOAP通过(CXF/JAXB)发送的请求的拦截器JAX-WS是否保证在调用发生时在同一个线程中运行?

我问的原因是因为我想使用一些请求 ID 参数作为键将原始请求和响应(XML 转储)记录到数据库中。而且我不知道如何将此 ID 传递给拦截器,除了在JAXB调用之前将其设置为 ThreadLocal 变量并在拦截器中检索它。还有其他我看不到的原因使这种策略成为一个坏主意吗?

4

1 回答 1

0

您可以将 ServletContext 注入您的服务/拦截器类

   @Context 
   private ServletContext context;   

并从/到上下文获取/设置属性

context.getAttribute  
context.setAttribute  

通过这种方式,您可以在服务/拦截器之间传输对象。
你也可以使用方法

Message#getContextualProperty  
Message#setContextualProperty 

在你的拦截器中设置/获取属性到/从上下文

于 2012-11-07T21:08:22.060 回答