2

注釈を使用する 2 つのエンドポイントがあります。それぞれに異なるインターセプターを適用したい。(1 つは安全なインターセプターで、もう 1 つは安全ではない) を使用してこれを行う方法はありPayloadRootAnnotationMethodEndpointMappingますか? 誰にもアイデアがありますか?

Spring に付属する航空会社の例の applicationContext-ws.xml によると、次のようになります。

エンドポイント マッピングは、リクエストからエンドポイントにマップします。に対してのみセキュリティ インターセプトが発生するようにするため、 GetFrequentFlyerMileageEndpoint2 つのマッピングを定義します。

これを行う唯一の方法は、2 つの異なるマッピングを持つことorg.springframework.ws.server.endpoint.mapping.PayloadRootAnnotationMethodEndpointMappingですorg.springframework.ws.server.endpoint.mapping.PayloadRootQNameEndpointMapping

4

2 に答える 2

1

また、アプリケーション コンテキストで sws:interceptors 要素を使用して、特定のエンドポイントを持つ特定のインターセプターを指定し、soapAction または 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"/>
于 2011-07-28T20:42:16.297 に答える
1

にインターセプター セットを指定するEndpointMappingと、それらのインターセプターは、その によってマップされたすべてのエンドポイントに適用されEndpointMappingます。したがって、一部のエンドポイントが他のエンドポイントに対して異なるインターセプターのセットを取得する場合は、2 つの異なる Bean が必要です。1EndpointMappingつはセキュア インターセプターを使用し、セキュア エンドポイントにマッピングし、もう 1 つはインターセプターを使用せず、セキュアでないエンドポイントにマッピングします。

どのEndpointMapping実装を使用するかは、アプリケーションと使用するエンドポイントの種類によって異なります。

于 2009-10-22T07:45:35.150 に答える