Question

J'ai deux points de terminaison utilisant des annotations. Je veux appliquer différents intercepteurs à chacun d'eux. (l'un étant un intercepteur sécurisé et l'autre non sécurisé) Existe-t-il un moyen de le faire en utilisant PayloadRootAnnotationMethodEndpointMapping ? Quelqu'un a une idée?

Selon l'applicationContext-ws.xml de l'exemple de compagnie aérienne fourni avec Spring:

  

La carte de correspondance des points finaux à partir d'un   demande à un noeud final. Parce que nous   veulent seulement l'interception de sécurité   se produire pour la    GetFrequentFlyerMileageEndpoint , nous   définir deux correspondances: une avec le   securityInterceptor, et un général   sans elle.

Ainsi, la seule façon de procéder consiste à utiliser deux mappages différents: org.springframework.ws.server.endpoint.mapping.PayloadRootAnnotationMethodEndpointMapping et org.springframework.ws.server. endpoint.mapping.PayloadRootQNameEndpointMapping pour ceux qui sont sécurisés?

Était-ce utile?

La solution

Lorsque vous attribuez à un intercepteur un EndpointMapping , ces intercepteurs s’appliquent à tous les points de terminaison mappés par ce EndpointMapping . Ainsi, si vous souhaitez que certains points d'extrémité transmettent un ensemble différent d'intercepteurs à d'autres points d'extrémité, vous avez besoin de deux beans EndpointMapping différents, l'un avec l'intercepteur sécurisé et le mappage vers les noeuds finaux sécurisés, et l'autre sans intercepteurs et mappage vers les points de terminaison non sécurisés.

Les implémentations EndpointMapping que vous utilisez dépendent de l'application et des types de points de terminaison utilisés.

Autres conseils

Vous pouvez également utiliser l'élément sws: interceptors dans votre contexte d'application pour spécifier des intercepteurs particuliers avec des points de terminaison particuliers, filtrés par leurs attributs soapAction ou payloadRoot.

De: 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"/>
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top