봄에 JAX-RS (CXF) MessageContext 외부 서비스 클래스 액세스 (2.5)

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

  •  05-07-2019
  •  | 
  •  

문제

로깅 목적으로 httpservletrequest에 액세스하기 위해 측면에서 MessageContext (또는 WebserviceContext)에 액세스하려고합니다. 나는 스프링 -WS에서했던 것처럼 맥락을 주사하고 싶지만 그것을 할 방법을 찾지 못했습니다. 스프링 -WS에 사용한 내용은 다음과 같습니다.

<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 ())을 인스턴스화하는 것도 작동하지 않지만, 이로 인해 ThreadLocal을 래핑해야합니다. 또한 CXF-EXTENSION-JAXWS.XML을 가져 와서 ID org.apache.cxf.jaxws.context.webserviceContextImpl (NULL은 아니지만 아무것도 보관하지 않음)으로 Bean을 배선하려고 시도 했습니까?

감사해요

도움이 되었습니까?

해결책

스프링 구성 (메시지 또는 맵 유형으로 주입)

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

그런 다음 수업을받습니다

request = (httpservletrequest) currentMessage.get ( "http.request");

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top