2009-04-17 12 views
1

ボトムアップWebサービスのクライアントコードの構築方法をリファクタリングしています。既存のビルドでは、JBoss 4.2でWebサービスをデプロイし、http://devserver.url?wsdlに対してAxis 2 AntCodegenTaskを実行することにより、Javaクライアントコードを作成します。この方法は、開発サーバーが停止しているか、wsdlが古くなっている場合は失敗します。 (wsdlが変わるたびにCrusie Controlは失敗します)。Axis 2 java2wsdlは?wsdl URLにJBossが表示するものとは異なるwsdlを作成します

Webサービスの展開を指すのではなく、Webサービスクラス自体に対してクライアントコードを構築する必要があります。私は、Webサービスクラスからwsdlを生成するためにjava2wsdlを使用し、クライアントクラスを生成するために同じAntCodegenTaskを使用します。

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

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

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

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

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

誰かがAxis 2で動作するようになったのですか?

答えて

0

JBossサーバーにWebサービスをデプロイします。ローカルのWSDLファイルを保存し、パラメータとしてAntタスクに渡します。うまくいけば生成されたクラスは正しいでしょうが、Axis 2はJBossが生成したWSDLで動作したくないということもあります。

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

JBossの異なるバージョンでも異なるWSDLファイルが生成されるので、生成されたWSDLファイルを使用し、アプリケーションなどでパッケージ化してください。

Axisはいつも吸い込まれています。(私はそれほど明白ではありませんが...)Apache CXFまたはネイティブJBossの実装を使用してください。

関連する問題