Spring WS и PayloadRootAnnotationMethodEndpointMapping - PullRequest
2 голосов
/ 21 октября 2009

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

В соответствии с applicationContext-ws.xml примера авиакомпании, который поставляется с Spring:

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

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

Ответы [ 2 ]

1 голос
/ 29 июля 2011

Вы также можете использовать элемент 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"/>
1 голос
/ 22 октября 2009

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

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

...