我有一些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
代替什么?
提前谢谢。
答案 0 :(得分: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();