3

XML (SOAP) メッセージを受け取り、逆シリアル化されたオブジェクトを返す Java コードがあります。

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 に答える