2009-10-21 1 views
4

애스펙트에서 MessageContext (또는 WebServiceContext)에 액세스하여 로깅 목적으로 HTTPServletRequest에 액세스하려고합니다. 나는 봄 - ws를 위해했던 것처럼 문맥을 주입하고 싶다 그러나 나는 그것을하는 방법을 찾아 내지 않았다. 여기에 봄-WS에 사용되는 것입니다 : 내가 (운없이 어쨌든 시도) 서비스에 아닙니다으로Spring (2.5)에서 서비스 클래스 외부의 jax-rs (CXF) MessageContext에 액세스하기

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

내가으로, WebServiceContext 필드/메소드에 @Resource 주석을 사용할 수 없습니다. WebServiceContext (즉, 새로운 WebServiceContextImpl())를 인스턴스화하는 것은 작동하지 않지만, 이것은 스레드 로컬을 래핑하기 만하면됩니다. 나는 또한 cxf-extension-jaxws.xml을 가져 와서 ID가있는 빈을 연결하려고 시도했다. org.apache.cxf.jaxws.context.WebServiceContextImpl은 행운이 없다. (null이 아니지만 아무것도 갖고 있지 않다.) 어떤 아이디어인가?

감사

스프링의 구성에

답변

2

(메시지로 주입 또는지도 형) 클래스를받는 후

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

요청 = (HttpServletRequest의) currentMessage.get ("HTTP.REQUEST");

관련 문제