Десериализация с помощью оси 2 - PullRequest
3 голосов
/ 27 января 2011

У меня есть некоторый 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 на? Заранее спасибо.

1 Ответ

2 голосов
/ 17 мая 2011

Каждое сообщение в движке Axis2 помещается в объект MessageContext.Когда сообщение SOAP поступает в систему или готово к отправке, мы создаем объектную модель AXIOM для сообщения SOAP.

(пожалуйста, прочитайте серию статей AXIOM для получения дополнительной информации об AXIOM).Эта модель AXIOM затем включается в объект контекста сообщения.Давайте посмотрим, как получить доступ к этому SOAP-сообщению в Axis2.

// 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

...