1

ボトムアップWebサービスのクライアントコードを構築する方法をリファクタリングしています。既存のビルドは、JBoss 4.2でのWebサービスのデプロイメントを使用し、 http://devserver.url?wsdlに対してAxis 2 AntCodegenTaskを実行することにより、Javaクライアントコードを作成します。開発サーバーがダウンしているか、古いwsdlがある場合、このメソッドは失敗します。(wsdlが変更されるたびにCrusie Controlは失敗します。)

Webサービスのデプロイメントを指すのではなく、Webサービスクラス自体に対してクライアントコードをビルドする必要があります。java2wsdlを使用してWebサービスクラスからwsdlを生成してから、同じAntCodegenTaskを使用してクライアントクラスを生成します。

問題は、java2wsdlによって作成されたwsdlが、JBossがhttp://devserver.url?wsdlに表示するものと異なることです。特に、一部の名前空間は異なり、AntCodegenTaskステップはこれらの名前空間を正しいパッケージ構造に変換しません。

最終的なパッケージ構造をクライアントコードが期待するものにする必要があります。既存のAntCodegenTaskはnamespacetopackages="..."を使用してそれを実現しますが、java2wsdlによって生成されたwsdlに対して同じAntCodegenTaskを実行すると、名前空間がパッケージ名に変換されません。

WebサービスがJBossにデプロイされている場合、Axisがjava2wsdlから生成するものとは異なるwsdlを表示するのはなぜですか?

Axisを使用して、中間のwsdlを生成せずにWebサービスクラスからクライアントコードを作成する方法はありますか?

java2wsdlおよびwsdl2javaAntタスクのドキュメントは少しむらがあります。Axis 2 v 1.4.1は、異なるパッケージのAntCodegenTaskと2つのJava2WSDLTasksのAntタスクを提供します。Axis 2のインストールには、wsdl2javaおよびjava2wsdlのバイナリが含まれていますが、codegenバイナリは含まれていません。たぶん、AntCodegenTaskはwsdl2javaと同じです。

Axis 2で動作するこのようなものを誰かが持っていますか?

4

1 に答える 1

0

JBoss サーバーに Web サービスをデプロイします。WSDL ファイルをローカルに保存し、パラメーターとして Ant タスクに渡します。生成されたクラスが正しいことを願っていますが、Axis 2 が JBoss で生成された WSDL を操作したくない場合があります。

その場合、AXIS ant タスクの代わりに JBoss で提供される wsconsume.bat を使用します。

JBoss の異なるバージョンでも異なる WSDL ファイルが生成されるため、一度生成された WSDL ファイルを常に使用し、アプリケーションなどにパッケージ化します。

Axis は、できれば (今はそれほど明白ではありませんが...) Apache CXF またはネイティブ JBoss 実装を使用してください。

于 2012-02-24T13:00:09.603 に答える