Java WS クライアントのアーティファクトを生成した後、
- なぜ wsdllocation 参照が必要なのですか?
- 実行時に WSDL が必要なのはなぜですか?
いくつかの検証の理由がわかるかもしれませんが、それはオプションではないでしょうか?
Java WS クライアントのアーティファクトを生成した後、
いくつかの検証の理由がわかるかもしれませんが、それはオプションではないでしょうか?
概要: 設計の観点からは、Web サービス クライアントに WSDL は必要ありませんが、Web サービス クライアントに対してSun によって行われる実装は、WSDL に強く依存しています。明らかな目的は、実行時の依存関係の一部を動的に生成することです。
まず、ポータブル クライアントを作成する予定がある場合は、WSDL をパッケージ化して参照することをお勧めします。
それはさておき、必要な実行時アーティファクトがすべて実装によって生成された場合、WSDL は必要ありません。
Java の場合、wsimport ツールはいくつかの静的アーティファクト (パフォーマンス目標を満たすためのインターフェースおよびおそらくサポート コード) を生成し、実行時に動的に作成される他の要素を残します。最初から、WSDL ドキュメントが Service コンストラクターの主要な位置を占めていることがわかります。
protected Service(java.net.URL wsdlDocumentLocation, QName serviceName)
delegate = Provider.provider().createServiceDelegate(wsdlDocumentLocation,
serviceName,
this.getClass());
}
WSDL ドキュメントはsource
データ ストリームに解決されます。提供されていない場合は、デフォルトで次のようになります (コア エッセンスを抽出するために自由が取られます)。
source = new StreamSource( ... webserviceclient.wsdlLocation() ... );
さらに深く掘り下げて、WSServiceDelegate に:
WSDLModelImpl wsdlmodelimpl = parseWSDL(url, source);
wsdlserviceimpl = wsdlmodelimpl.getService(serviceName);
基礎となるサービスサポートの少なくとも一部を動的に作成しています。
wsdlLocation は Java 実装に不可欠です。