kiwifrog
kiwifrog

Reputation: 794

Deserialization with Axis 2

I have some Java code that takes an XML (SOAP) message and returns the deserialized object:

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;
    }

However this code only works with Axis 1.4 :-( Could someone Help me have that code work with Axis 2?

In fact, I might just need to know what to replace the import org.apache.axis.Message with? Thanks in advance.

Upvotes: 3

Views: 3016

Answers (1)

EricParis16
EricParis16

Reputation: 809

Every message within the Axis2 engine is wrapped inside a MessageContext object. When a SOAP message arrives into the system or is prepared to be sent out, we create an AXIOM object model of the SOAP message.

(Please read the AXIOM article series for more information on AXIOM). This AXIOM model is then included inside the message context object. Let's see how to access this SOAP message inside Axis2.

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

object will be passed to you through Handler.invoke(MessageContext) method.

SOAPEnvelope soapEnvelope = messageContext.getEnvelope();

please see : javax.xml.soap Interface SOAPEnvelope

Processing Axis2 message

Upvotes: 2

Related Questions