ボトムアップ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で動作するようになったのですか?