![](/img/trans.png)
[英]@PayloadRoot vs @Action vs @SoapAction in Spring-WS
[英]need to use both @soapaction and @PayloadRoot in single application
我們有一個Spring應用程序,其中有一些Web服務將同時使用PayloadRoot和SoapAction。 現在,我們在webservice-ws-context.xml中配置了以下代碼
<bean class="org.springframework.ws.server.endpoint.mapping.PayloadRootAnnotationMethodEndpointMapping">
<property name="interceptors">
<list>
<bean class="org.springframework.ws.server.endpoint.interceptor.PayloadLoggingInterceptor"/>
<bean id="validatingInterceptor" class="org.springframework.ws.soap.server.endpoint.interceptor.PayloadValidatingInterceptor">
<property name="schema" value="classpath:/xsd/common.xsd"/>
<property name="validateRequest" value="${uiconnect.ws.payload.validate.request}"/>
<property name="validateResponse" value="${uiconnect.ws.payload.validate.response}"/>
</bean>
</list>
</property>
</bean>
現在,我們要添加用於肥皂動作的代碼,但是如果添加以下代碼,則它將無法正常工作。 因此,我們如何為該bean提供“ id”屬性,並為特定的Web服務配置該bin。 還是有其他方法可以配置它? 我試圖進行自定義的終結點映射,但是對此沒有幫助。
<bean class="org.springframework.ws.soap.server.endpoint.mapping.SoapActionAnnotationMethodEndpointMapping">
<property name="interceptors">
<list>
<bean class="org.springframework.ws.soap.server.endpoint.interceptor.SoapEnvelopeLoggingInterceptor"/>
<bean id="validatingInterceptor" class="org.springframework.ws.soap.server.endpoint.interceptor.PayloadValidatingInterceptor">
<property name="schema" value="classpath:/xsd/common.xsd"/>
<property name="validateRequest" value="${uiconnect.ws.payload.validate.request}"/>
<property name="validateResponse" value="${uiconnect.ws.payload.validate.response}"/>
</bean>
</list>
</property>
</bean>
配置它的一種更簡單的方法是使用Spring-WS提供的自定義名稱空間:
首先,對組件進行掃描以確保找到了@Endpoint注釋的bean:
<context:component-scan base-package="..." />
以下將在內部注冊PayloadRootAnnotationMethodEndpointMapping
和SoapActionAnnotationMethodEndpointMapping
<sws:annotation-driven />
並注冊攔截器:
<sws:interceptors>
<bean id="validatingInterceptor" class="org.springframework.ws.soap.server.endpoint.interceptor.PayloadValidatingInterceptor">
<property name="schema" value="classpath:/xsd/common.xsd"/>
<property name="validateRequest" value="${uiconnect.ws.payload.validate.request}"/>
<property name="validateResponse" value="${uiconnect.ws.payload.validate.response}"/>
</bean>
<sws:payloadRoot namespaceUri="....">
<bean class="org.springframework.ws.server.endpoint.interceptor.PayloadLoggingInterceptor"/>
</sws:payloadRoot>
<sws:soapAction value="...">
<bean class="org.springframework.ws.soap.server.endpoint.interceptor.SoapEnvelopeLoggingInterceptor"/>
</sws:soapAction>
</sws:interceptors>**
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.