与调用相同的线程中的JAX-WS请求和响应拦截器?

时间:2012-11-06 14:57:53

标签: java multithreading jax-ws cxf

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

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

1 个答案:

答案 0 :(得分:0)

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

   @Context 
   private ServletContext context;   

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

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

Message#getContextualProperty  
Message#setContextualProperty 

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