2009-10-21 3 views
2

У меня есть две конечные точки, использующие аннотации. Я хочу применять разные перехватчики к каждому из них. (один из них является безопасным перехватчиком, а другой не защищен) Есть ли способ сделать это, используя PayloadRootAnnotationMethodEndpointMapping? У кого-нибудь есть идея?Spring WS и PayloadRootAnnotationMethodEndpointMapping

Согласно ApplicationContext-ws.xml примера авиакомпании, которая приходит с весной:

Конечная точка отображения карты от запроса к конечной точке. Потому что мы только хотим перехватывать безопасности для происходит за GetFrequentFlyerMileageEndpoint, мы определим два отображения: один с securityInterceptor и общий один без него.

Так это единственный способ сделать это, чтобы иметь два различных отображения: org.springframework.ws.server.endpoint.mapping.PayloadRootAnnotationMethodEndpointMapping и org.springframework.ws.server.endpoint.mapping.PayloadRootQNameEndpointMapping для безопасных из них?

ответ

1

Если вы передадите перехватчик в EndpointMapping, то эти перехватчики будут применяться ко всем конечным точкам, отображаемым этим EndpointMapping. Поэтому, если вы хотите, чтобы некоторые конечные точки получали другой набор перехватчиков для других конечных точек, тогда да, вам нужны два разных компонента: EndpointMapping, один с защищенным перехватчиком и сопоставление с безопасными конечными точками, а другой без перехватчиков и сопоставление с необеспеченными конечными точками ,

Какая EndpointMapping реализация, которую вы используете, зависит от приложения и каких видов конечных точек, которые он использует.

1

Вы также можете использовать элемент sws: interceptors в контексте вашего приложения, чтобы указать конкретные перехватчики с определенными конечными точками, отфильтрованные их атрибутами 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"/> 
Смежные вопросы