Вопрос

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

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

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

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

Это было полезно?

Решение

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

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

Другие советы

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