複数 (A と B の 2 つとしましょう) の Web サービスがあり、それらを一緒に使用するクライアントを生成する必要があります。Netbeans では、ウィザードの「新しい Web サービス クライアント」を使用して 2 つの wsdl を渡し、出力を見ると、Netbeans はそれぞれに対して wsimport を呼び出すだけです。
wsimport http:/mydomain/wsA.svc?wsdl
wsimport http:/mydomain/wsB.svc?wsdl
A と B の両方が同じパッケージ com.mydomain.myapp を生成するため (同じ名前空間で定義されていると思います)、同じパッケージにマージされた A と B のスタブ クラス セットを取得します。
ただし、wsimport は Web サービスごとに ObjectFactory も作成するため、AI の後に B のスタブを生成すると、B 定義に関連する ObjectFactory のみが取得されます (最初の A が上書きされるため)。逆に言えば、順番を入れ替えればAのObjectFactoryが生き残る。
問題は、Web サービス A と B の両方のタイプのクラス インスタンスをラップする JAXBElements を作成するために、両方の ObjectFactory が必要なことです。
取得するために、JavaパッケージでAの名前空間をマップし、別のパッケージでBの名前空間をマップする方法はありますか
com.mydomain.myapp.a
com.mydomain.myapp.b
両方の ObjectFactory を保持しますか?
内部的に getClass() が呼び出されるため、単純なリファクタリングは役に立ちません。パッケージがリファクタリングされると、パッケージは機能しなくなります。