Accediendo a jax-rs (CXF) MessageContext fuera de la clase de servicio en Spring (2.5)

StackOverflow https://stackoverflow.com/questions/1600747

  •  05-07-2019
  •  | 
  •  

Pregunta

Estoy tratando de acceder a MessageContext (o WebServiceContext) en un aspecto para obtener acceso a HTTPServletRequest para fines de registro. Me gustaría inyectar el contexto como lo hice para spring-ws, pero no he encontrado la manera de hacerlo. Esto es lo que usé para spring-ws:

<beans:bean id="transportContext" class="org.springframework.ws.transport.context.TransportContextHolder" factory-method="getTransportContext" scope="request">
 <aop:scoped-proxy/>
 </beans:bean>

No puedo usar la anotación @Resource en el campo / método WebServiceContext ya que no estoy en el servicio (de todos modos lo intenté sin suerte). La creación de una instancia de WebServiceContext (es decir, una nueva WebServiceContextImpl ()) tampoco funciona, pero se supone que debería hacerlo, ya que esto simplemente envuelve un threadlocal. También he intentado importar cxf-extension-jaxws.xml y conectar el bean con id org.apache.cxf.jaxws.context.WebServiceContextImpl sin suerte (no es nulo pero no contiene nada) ¿Alguna idea?

gracias

¿Fue útil?

Solución

En Spring Config (inyectado como mensaje o incluso tipo de mapa)

    <beans:bean id="currentMessage" class="org.apache.cxf.phase.PhaseInterceptorChain" factory-method="getCurrentMessage" scope="request">
<aop:scoped-proxy/>
    </beans:bean> 

luego en la clase receptora

request = (HttpServletRequest) currentMessage.get (" HTTP.REQUEST ");

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top