الربيع WS وPayloadRootAnnotationMethodEndpointMapping
سؤال
ولدي اثنين من النهاية استخدام التعليقات. أريد أن تطبيق اعتراضية مختلفة لكل منها. (واحد كونه اعتراضية آمن والآخر عدم آمن) هل هناك طريقة للقيام بذلك PayloadRootAnnotationMethodEndpointMapping
تستخدمه؟ أي شخص لديك فكرة؟
ووفقا لapplicationContext-ws.xml من المثال الجوي الذي يأتي مع الربيع:
<اقتباس فقرة> والخريطة تعيينات نقطة النهاية من
طلب إلى نقطة النهاية. لأننا
نريد فقط اعتراض الأمن ل
تحدث ل
GetFrequentFlyerMileageEndpoint
، ونحن
تحديد اثنين من تعيينات: واحد مع
securityInterceptor، واحد العام
دون ذلك.
وهكذا هي الطريقة الوحيدة للقيام بذلك هي لاثنين من تعيينات مختلفة: org.springframework.ws.server.endpoint.mapping.PayloadRootAnnotationMethodEndpointMapping
وorg.springframework.ws.server.endpoint.mapping.PayloadRootQNameEndpointMapping
لتلك آمنة
المحلول
عند إعطاء اعتراضية تعيينها إلى EndpointMapping
، ثم سيتم تطبيق تلك الصواريخ الاعتراضية إلى جميع نهايات المعين من قبل أن EndpointMapping
. حتى إذا كنت تريد بعض نقاط النهاية للحصول على مجموعة مختلفة من الصواريخ الاعتراضية إلى نهايات أخرى، ثم نعم، تحتاج اثنين من الفاصوليا EndpointMapping
مختلفة، واحدة مع اعتراضية آمن ورسم خرائط لنقاط النهاية آمنة، وآخر مع عدم وجود اعتراض ورسم خرائط لنقاط النهاية غير المضمونة .
وأي تطبيقات EndpointMapping
استخدام تعتمد على الطلب وأي نوع من النهايات يستخدمه.
نصائح أخرى
ويمكنك أيضا استخدام SWS: عنصر اعتراضية في سياق التطبيق الخاص بك لتحديد اعتراضية خاصة مع النهاية معينة، تمت تصفيتها من قبل soapAction أو سمات payloadRoot
.<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"/>