문제

주석을 사용하여 두 가지 엔드 포인트가 있습니다. 나는 그들 각각에 다른 인터셉터를 적용하고 싶습니다. (하나는 안전한 인터셉터이고 다른 하나는 안전하지 않음) 이것을 사용하는 방법이 있습니다. PayloadRootAnnotationMethodEndpointMapping? 누구든지 아이디어가 있습니까?

Spring과 함께 제공되는 항공사 예제의 ApplicationContext-ws.xml에 따르면 :

엔드 포인트 매핑은 요청에서 엔드 포인트로 맵핑됩니다. 우리는 보안 차단만이 GetFrequentFlyerMileageEndpoint, 우리는 두 개의 매핑을 정의합니다.

이를 수행하는 유일한 방법은 두 가지 다른 매핑을 갖는 것입니다. org.springframework.ws.server.endpoint.mapping.PayloadRootAnnotationMethodEndpointMapping 그리고 org.springframework.ws.server.endpoint.mapping.PayloadRootQNameEndpointMapping 안전한 것들을 위해?

도움이 되었습니까?

해결책

인터셉터를 설정할 때 EndpointMapping, 그러면 그 인터셉터는 그에 의해 매핑 된 모든 엔드 포인트에 적용됩니다. EndpointMapping. 따라서 일부 엔드 포인트가 다른 엔드 포인트에 다른 인터셉터 세트를 가져 오려면 그렇다면 두 가지가 필요합니다. EndpointMapping 콩, 하나는 보안 인터셉터와 보안 엔드 포인트에 매핑하고 다른 하나는 인터셉터가없고 보안되지 않은 엔드 포인트에 매핑됩니다.

어느 EndpointMapping 사용하는 구현은 응용 프로그램과 사용하는 종말점에 따라 다릅니다.

다른 팁

애플리케이션 컨텍스트에서 SWS : 인터셉터 요소를 사용하여 SOAPACTION 또는 PayloadRoot 속성으로 필터링 된 특정 엔드 포인트가있는 특정 인터셉터를 지정할 수도 있습니다.

에서:http://static.springsource.org/spring-ws/site/reference/html/server.html#server-endpoint-interceptor

<sws:interceptors>
  <bean class="samples.MyGlobalInterceptor"/>
  <sws:payloadRoot namespaceUri="http://www.example.com">
    <bean class="samples.MyPayloadRootInterceptor"/>
  </sws:payloadRoot>
  <sws:soapAction value="http://www.example.com/SoapAction">
    <bean class="samples.MySoapActionInterceptor1"/>
    <ref bean="mySoapActionInterceptor2"/>
  </sws:soapAction>
</sws:interceptors>

<bean id="mySoapActionInterceptor2" class="samples.MySoapActionInterceptor2"/>
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top