Pregunta

Tengo dos puntos finales que utilizan anotaciones. Quiero aplicar diferentes interceptores a cada uno de ellos. (uno es un interceptor seguro y el otro no es seguro) ¿Hay alguna manera de hacer esto usando PayloadRootAnnotationMethodEndpointMapping ? ¿Alguien tiene una idea?

De acuerdo con la aplicaciónContext-ws.xml del ejemplo de aerolínea que viene con Spring:

  

El mapa de mapeo de puntos finales de un   solicitud a un punto final. Porque nosotros   Sólo quiero la intercepción de seguridad para   ocurrir para el    GetFrequentFlyerMileageEndpoint , nosotros   definir dos asignaciones: una con la   interceptor de seguridad, y uno general   sin ella.

Por lo tanto, la única forma de hacer esto es tener dos asignaciones diferentes: org.springframework.ws.server.endpoint.mapping.PayloadRootAnnotationMethodEndpointMapping y org.springframework.ws.server. endpoint.mapping.PayloadRootQNameEndpointMapping para los seguros?

¿Fue útil?

Solución

Cuando asigna un conjunto de interceptor a un EndpointMapping , esos interceptores se aplicarán a todos los puntos finales asignados por ese EndpointMapping . Entonces, si desea que algunos puntos finales obtengan un conjunto diferente de interceptores para otros puntos finales, entonces sí, necesita dos beans EndpointMapping diferentes, uno con el interceptor seguro y la asignación a los puntos finales seguros, y otro sin interceptores y mapeo a los puntos finales no seguros.

Las implementaciones de EndpointMapping que use dependen de la aplicación y qué tipos de Endpoints usa.

Otros consejos

También puede usar el elemento sws: interceptors en el contexto de su aplicación para especificar interceptores particulares con puntos finales particulares, filtrados por sus atributos de soapAction o payloadRoot.

Desde: 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"/>
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top