【发布时间】:2014-03-19 13:43:56
【问题描述】:
我正在使用 Spring 框架。
我有多个 mashaller 和多个端点。我的编组器的 Jaxb 上下文是使用 xml 绑定文件(使用 eclipselink-oxm-xml jaxbContextProperties)定义的,因为我有多个编组任务。使用注释不是一个好的解决方案,因为同一个对象需要不同的编组/解组过程,具体取决于端点。
我目前对单个 JaxbMarshaller 和 Endpoint 的配置如下所示:
<sws:annotation-driven marshaller="marshallerA" unmarshaller="marshallerA"/>
<bean id="loggingInterceptor"
class="org.springframework.ws.server.endpoint.interceptor.PayloadLoggingInterceptor"/>
<bean id="messageReceiver"
class="org.springframework.ws.soap.server.SoapMessageDispatcher">
<property name="endpointAdapters">
<list>
<ref bean="defaultMethodEndpointAdapter" />
</list>
</property>
</bean>
<bean id="defaultMethodEndpointAdapter"
class="org.springframework.ws.server.endpoint.adapter.DefaultMethodEndpointAdapter">
<property name="methodReturnValueHandlers">
<list>
<ref bean="marshallingPayloadMethodProcessor"/>
</list>
</property>
<property name="methodArgumentResolvers">
<list>
<ref bean="marshallingPayloadMethodProcessor"/>
</list>
</property>
</bean>
<bean id="marshallingPayloadMethodProcessor"
class="org.springframework.ws.server.endpoint.adapter.method.MarshallingPayloadMethodProcessor">
<constructor-arg ref="marshallerA" />
<constructor-arg ref="marshallerA" />
</bean>
<bean class="org.springframework.ws.server.endpoint.mapping.PayloadRootAnnotationMethodEndpointMapping">
<property name="order" value="1" />
</bean>
<sws:dynamic-wsdl id="myEndpointA"
portTypeName="WebService"
locationUri="/ws/myEndpointServiceA/"
targetNamespace="http://company.com/schema/webServices" >
<sws:xsd location="classpath:/path/to/schema/mySchemaA.xsd"/>
</sws:dynamic-wsdl>
<bean id="marshallerA" class="org.springframework.oxm.jaxb.Jaxb2Marshaller">
<property name="contextPath" value="x.y.z:x.y.w"/>
<property name="jaxbContextProperties">
<util:map>
<entry key="eclipselink-oxm-xml">
<list>
<value>file:/bindingFileOne.xml</value>
<value>file:/bindingFileTwo.xml</value>
<value>file:/bindingFileThree.xml</value>
</list>
</entry>
</util:map>
</property>
</bean>
现在假设我有第二个端点和第二个编组器,我如何强制端点使用特定的编组器?
感谢您的帮助! :)
【问题讨论】:
标签: xml spring jaxb moxy endpoint