1

Axis2 に基づく従来の Java Web サービスがあります。この Web サービス クラスは、次のもので構成されます。

  • サービス インターフェイス (WSDL から生成)。
  • サービスの実装 (社内で作成);
  • リクエストとレスポンスを表す自動生成されたエンティティのようなクラスの束。

XML への応答の 1 つの一部を抽出してキャッシュする必要もあります (最終的には、整形式のドキュメントとしてファイル システムに移動します)。getOMElement()シリアル化のために応答クラスのメソッドをハッキングしてきましたが、役に立ちませんでした。生成されたクラスはすべて、FactoryXML を取り込んでオブジェクトを生成する静的メンバーを持っているため、デシリアライズは簡単に見えます。

厳密に型指定されたオブジェクト グラフのサブセットを XML にシリアル化して、生成された Axis2Factoryが後で逆シリアル化できるようにするにはどうすればよいですか?

ps: Axis2 で行き詰まっています。はい、これは(たとえば)xfireを使用すると非常に簡単です...

4

1 に答える 1

1

完全を期すために、これが私が最終的に思いついた解決策です...

オブジェクト -> XML (これは良くありません):

// in this case, response is the Axis2 generated class at the root
// of the webservice response
String xml = response.getOMElement(null, null).toString();

XML -> オブジェクト (不快感が少しだけ減ります):

// xml is the string we created earlier
XMLStreamReader reader = XMLInputFactory
                                .newInstance()
                                .createXMLStreamReader(new StringReader(xml));

// WebserviceResponse is the class generated by Axis2        
return WebserviceResponse.Factory.parse(reader); 

これらの方法はどちらも優れたものではありませんが、少なくとも機能します (そして、深刻な単体テストに囲まれています...)。

于 2009-10-30T12:01:58.533 に答える