Accesso a jax-rs (CXF) MessageContext al di fuori della classe di servizio in primavera (2.5)

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

  •  05-07-2019
  •  | 
  •  

Domanda

Sto provando ad accedere a MessageContext (o WebServiceContext) in un aspetto per ottenere l'accesso a HTTPServletRequest ai fini della registrazione. Vorrei iniettare il contesto come ho fatto per la primavera, ma non ho trovato il modo di farlo. Ecco cosa ho usato per spring-ws:

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

Non riesco a usare l'annotazione @Resource sul campo / metodo WebServiceContext in quanto non sono nel servizio (provato comunque senza fortuna). L'istanza di WebServiceContext (ovvero il nuovo WebServiceContextImpl ()) non funziona neanche, ma presumibilmente dovrebbe in quanto avvolge un threadlocal. Ho anche provato a importare cxf-extension-jaxws.xml e cablare il bean con id org.apache.cxf.jaxws.context.WebServiceContextImpl senza fortuna (non è nullo ma non contiene nulla) Qualche idea?

grazie

È stato utile?

Soluzione

In primavera config (iniettato come Messaggio o anche tipo Mappa)

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

quindi nella classe ricevente

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

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top