gpt4 book ai didi

java - Spring WS : What class invokes unmarshalling?

转载 作者:行者123 更新时间:2023-11-29 05:57:33 25 4
gpt4 key购买 nike

任何人都知道在 spring web 服务中哪个类实际调用解码?我想知道在 soap iterceptor 中调用 un/marshalling 是否有效/有必要。或者是否有更合适的拦截器来处理端点周围未编码的对象?如果是,我仍然想知道它在内部是如何工作的。

谢谢。

编辑

实际上我正在使用 org.springframework.ws.server.EndpointInterceptor 来更准确。

最佳答案

AbstractMarshallingPayloadEndpoint是将请求有效负载解码为对象并将响应对象编码为 XML 的端点,查看 its invoke() method source code :

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中,所有的marshaler类都实现了Marshaller和Unmarshaller接口(interface),为OXM编码提供一站式解决方案,例如Jaxb2Marshaller ,所以在 applicationContext 中像这样连接您的 AbstractMarshallingPayloadEndpoint 实现:

<bean id="myMarshallingPayloadEndpoint"
class="com.example.webservice.MyMarshallingPayloadEndpoint">
<property name="marshaller" ref="marshaller" />
<property name="unmarshaller" ref="marshaller" />
... ...
</bean>

希望这对您有所帮助。

关于java - Spring WS : What class invokes unmarshalling?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11496009/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com