AbstractMarshallingPayloadEndpointは、リクエストペイロードをオブジェクトにマーシャリングし、レスポンスオブジェクトをXMLにマーシャリングするエンドポイントです。そのinvoke()メソッドのソースコードを確認してください。
public final void invoke(MessageContext messageContext) throws Exception {
WebServiceMessage request = messageContext.getRequest();
Object requestObject = unmarshalRequest(request);
if (onUnmarshalRequest(messageContext, requestObject)) {
Object responseObject = invokeInternal(requestObject);
if (responseObject != null) {
WebServiceMessage response = messageContext.getResponse();
marshalResponse(responseObject, response);
onMarshalResponse(messageContext, requestObject, responseObject);
}
}
}
AbstractMarshallingPayloadEndpointには、XMLマーシャラーへの参照が必要です。
- Castor XML:org.springframework.oxm.castor.CastorMarshaller
- JAXB v1:org.springframework.oxm.jaxb.Jaxb1Marshaller
- JAXB v2:org.springframework.oxm.jaxb.Jaxb2Marshaller
- JiBX:org.springframework.oxm.jibx.JibxMarshaller
- XMLBeans:org.springframework.oxm.xmlbeans.XmlBeansMarshaller
- XStream:org.springframework.oxm.xstream.XStreamMarshaller
Spring-OXMでは、すべてのマーシャラークラスがMarshallerインターフェイスとUnmarshallerインターフェイスの両方を実装して、OXMマーシャリングのワンストップソリューション(Jaxb2Marshallerなど)を提供するため、applicationContextでAbstractMarshallingPayloadEndpoint実装を次のように配線します。
<bean id="myMarshallingPayloadEndpoint"
class="com.example.webservice.MyMarshallingPayloadEndpoint">
<property name="marshaller" ref="marshaller" />
<property name="unmarshaller" ref="marshaller" />
... ...
</bean>
お役に立てれば。