Pergunta

Eu tenho dois pontos finais usando anotações. Quero aplicar diferentes interceptores para cada um deles. (Sendo um deles um interceptor seguro eo outro não sendo seguro) Existe uma maneira de fazer isso usando PayloadRootAnnotationMethodEndpointMapping? Alguém tem uma idéia?

De acordo com o applicationContext-ws.xml do exemplo companhia aérea que vem com Primavera:

Os mapeamentos de endpoint mapear a partir de um solicitar a um ponto final. Porque nós só deseja a intercepção de segurança para ocorrer durante a GetFrequentFlyerMileageEndpoint, nós definir dois mapeamentos: um com o securityInterceptor, e um geral sem ele.

Assim é a única maneira de fazer isso é ter dois mapeamentos diferentes:? org.springframework.ws.server.endpoint.mapping.PayloadRootAnnotationMethodEndpointMapping e org.springframework.ws.server.endpoint.mapping.PayloadRootQNameEndpointMapping para os seguros

Foi útil?

Solução

Quando você dá um conjunto de interceptor a um EndpointMapping, em seguida, os interceptores serão aplicadas a todos os terminais mapeados pelo que EndpointMapping. Então, se você quer algumas Endpoints para obter um conjunto diferente de interceptores para outros parâmetros, então sim, você precisa de duas feijão EndpointMapping diferentes, um com o interceptor seguro e mapeamento para os pontos finais seguras, e outro sem interceptores e mapeamento de pontos de extremidade não garantidos .

Quais implementações EndpointMapping você uso é dependente da aplicação e que tipos de Endpoints utiliza.

Outras dicas

Você também pode usar os sws:. Elemento interceptores em seu contexto de aplicação para especificar interceptores particulares com endpoints particulares, filtradas por sua soapAction ou payloadRoot atributos

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"/>
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top