2011-01-27 89 views
3

我有一些Java代碼,將XML(SOAP)消息,並返回反序列化對象:反序列化與軸2

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

但是這個代碼僅與軸1.4工作:-(有人能幫助我有與軸2?

其實代碼的工作,我可能只需要知道什麼來取代import org.apache.axis.Message用? 在此先感謝。

+1

你需要更具體的瞭解您的錯誤信息是什麼。 *「不起作用」*是不夠的。 – 2011-04-01 08:33:05

回答

2

Axis2引擎中的每個消息被包裝在MessageContext的對象中。當SOAP消息ar進入系統或準備發送出去,我們創建一個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 Interface SOAPEnvelope

Processing Axis2 message

+0

Merci pour taréponseEric :) – kiwifrog 2011-05-18 06:51:36