3

我有一些 Java 代码接受 XML (SOAP) 消息并返回反序列化的对象:

public static <T> T deserializeObject(String xml, Class<T> clazz) throws AxisFault, Exception {
    assert xml != null : "xml != null";
    assert clazz != null : "clazz != null";

    T result = null;
    try {
        Message message = new Message(SOAP_START + xml + SOAP_END);
        result = (T)message.getSOAPEnvelope().getFirstBody().getObjectValue(clazz);
    } catch (Exception e) {
        // most likely namespace error due to removed namespaces
        Message message = new Message(SOAP_START_XSI + xml + SOAP_END);
        result = (T)message.getSOAPEnvelope().getFirstBody().getObjectValue(clazz);
    }
       return result;
    }

但是,此代码仅适用于 Axis 1.4 :-( 有人可以帮我让该代码与 Axis 2 一起使用吗?

事实上,我可能只需要知道用什么替换import org.apache.axis.Message?提前致谢。

4

1 回答 1

2

Axis2 引擎中的每条消息都包装在一个 MessageContext 对象中。当 SOAP 消息到达系统或准备发送出去时,我们创建 SOAP 消息的 AXIOM 对象模型。

(有关 AXIOM 的更多信息,请阅读 AXIOM 文章系列)。此 AXIOM 模型随后包含在消息上下文对象中。让我们看看如何在 Axis2 中访问这个 SOAP 消息。

// if you are within a handler, reference to the message context 
MessageContext messageContext; 

对象将通过 Handler.invoke(MessageContext) 方法传递给您。

SOAPEnvelope soapEnvelope = messageContext.getEnvelope();

请参阅: javax.xml.soap 接口 SOAPEnvelope

处理 Axis2 消息

于 2011-05-17T16:32:33.420 回答