7

複数 (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() が呼び出されるため、単純なリファクタリングは役に立ちません。パッケージがリファクタリングされると、パッケージは機能しなくなります。

4

2 に答える 2

2

おそらくJAXBバインディングファイルを介してこれを行うことができます-この質問/回答を見てください: java wsimport rename/different ObjectFactory.java

その答えから、オラクルのバインディングファイルを見てください:http://docs.oracle.com/javaee/5/tutorial/doc/bnbbf.html

于 2013-04-03T09:20:41.300 に答える