4

私はここで単純な何かを見逃していると完全に確信しています。

NetBeansを使用して2つの別々のプロジェクトでWebjax-wsWebサービスとクライアントを作成しています。また、NetBeansのインターフェースを使用してクライアントに追加したカスタムバインディングがいくつかあります。これはすべて正常に機能しているように見えますが、サービスに変更を加えてxsdの場所を再デプロイした後、カスタムバインディングが機能しなくなる場所が変更される/ServiceName?xsd=1ことがあります。/ServiceName?xsd=2

バインディングファイルを調整するだけで、過去数回は機能しましたが、最後に一部のコンテンツが残っています。?xsd=1これはの定義でstringArrayあり、クライアントを更新しようとするとエラーが発生するようです。これが私が得ているエラーです:

2つのクラスのXMLタイプ名は「{ http://jaxb.dev.java.net/array}stringArray」です。@XmlType.nameと@XmlType.namespaceを使用して、それらに異なる名前を割り当てます。

どんな提案でも大歓迎です!

4

1 に答える 1

1

良い。いいえ、あなたは本当に何も見逃していません。あなたが選んだアプローチは、あなたが達成したいことに対して完璧ではありません(少なくとも私の経験では)。

あなたは「Javaファースト」アプローチを使用しています(少なくともそれが私があなたの質問を解釈した方法です)。WSDL ファースト戦略を使用すると役立つ場合があります。

  1. 生成された WSDL ドキュメントを取得し、正式な WSDL として保存します (プロジェクトに .wsdl および .xsd ファイルを追加します)。

  2. wsimportサーバーとクライアントのスタブを生成するために使用します。

  3. 今後は WSDL/XSD ファイルのみに変更を加え、wsimportタスクで新しいスタブを生成します。

  4. サーバーが生成した WSDL を無視し、(現在は手動で維持されている) WSDL ファイルのみを使用します。

WSDL ファイルを直接編集するのは面倒に思えますが、将来性があります。生成されたエンティティをより細かく制御できるようになり、API への互換性のある変更と互換性のない変更をよりよく把握できます。

于 2013-07-29T09:22:55.547 に答える