Frühling WS und PayloadRootAnnotationMethodEndpointMapping
Frage
Ich habe zwei Endpunkte mit Anmerkungen. Ich möchte verschiedene Abfangjäger zu jedem von ihnen gelten. (Man ein sicherer Abfangjäger und die andere sind sicher nicht) Gibt es eine Möglichkeit, dies mit PayloadRootAnnotationMethodEndpointMapping
zu tun? Wer eine Idee?
Nach dem application-ws.xml der Fluggesellschaft Beispiel, die mit Frühling kommt:
Der Endpunkt-Mappings Karte von a an einen Endpunkt anfordern. Weil wir nur wollen die Sicherheit Interception auftreten für die
GetFrequentFlyerMileageEndpoint
, wir definieren zwei Zuordnungen: eine mit dem SecurityInterceptor, und ein allgemeiner ohne sie.
So ist der einzige Weg, dies zu tun ist, zwei verschiedene Zuordnungen haben: org.springframework.ws.server.endpoint.mapping.PayloadRootAnnotationMethodEndpointMapping
und org.springframework.ws.server.endpoint.mapping.PayloadRootQNameEndpointMapping
für die sicher diejenigen
Lösung
Wenn Sie eine Interceptor geben zu einem EndpointMapping
gesetzt, dann werden diese Abfangjäger auf alle unter diesen EndpointMapping
abgebildet Endpunkte anzuwenden. Also, wenn Sie einige Endpunkte wollen einen anderen Satz von Abfangraketen auf andere Endpunkte zu bekommen, dann ja, müssen Sie zwei verschiedene EndpointMapping
Bohnen, eine mit dem sicheren Abfangjäger und Abbildung auf die sicheren Endpunkte und andere ohne Abfangjäger und Abbildung auf die ungesicherten Endpunkte .
Welche EndpointMapping
Implementierungen Sie verwenden, ist abhängig von der Anwendung und welche Arten von Endpoints es verwendet.
Andere Tipps
Sie können mit auch die sws: Abfangjäger Element in Ihrem Anwendungskontext zu bestimmten Abfangjäger mit bestimmten Endpunkten, gefiltert durch ihre Soapaktion oder payloadRoot Attribute
angeben.<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"/>