0

Eclipse を使用して、サード パーティの wsdl を指定して Java クライアント コード スタブを生成しました。クライアントはうまく機能し、Web サービスにアクセスして、必要なことを実行できます。

ここで、Web サービスに接続しなくても実行できる単体テストをいくつか書きたいと思います。axis2スタック内のメカニズムを使用して、xmlファイルをJavaクライアントスタブコードのJavaオブジェクトの1つに逆シリアル化することは可能ですか?

たとえば、クライアント スタブ コードのクラスの 1 つは「Contact」です。通常は SOAP リクエストに含まれる xml を模倣した xml ファイルがあるとします。それをJava Contactオブジェクトに逆シリアル化するにはどうすればよいですか?

以前に XMLBeans を使用したことがありますが、Java クライアントが既に内部でこのデシリアライズを行っているように見えるので、もっと簡単な方法があることを願っていますか? おそらく、axis2 には、xml のチャンクを取得して Java オブジェクトを返すメソッドがありますか?

アップデート:

私はこれを試しました:

String packageName = Contact.class.getPackage().getName();
JAXBContext jc = JAXBContext.newInstance( packageName );

私はこれを得る:

java.lang.AssertionError: javax.xml.bind.JAXBException: "com.sforce.soap._2006._04.metadata" doesnt contain ObjectFactory.class or jaxb.index

次に、これを試しました:

Contact c = new Contact();
JAXBContext jc = JAXBContext.newInstance( c.getClass() );

しかし、その後、連絡先クラスが使用するクラスの1つという例外が発生しますdoes not have a no-arq default constructor

これが手早く簡単にできることを望んでいましたが、axis2 と jaxb の使用方法を完全に理解する時間ができるまで、xml を手動で解析するだけです。

4

1 に答える 1

1

これは、Axis では「アンマーシャリング」と呼ばれます。org.apache.axis2.jaxws.message.databinding.JAXBUtils.getJAXBUnmarshaller(JAXBContext context) を見てください。アンマーシャラーを取得したら、XML を逆シリアル化してオブジェクトに戻すことができます。

于 2011-03-29T21:39:28.807 に答える