4

Java WS クライアントのアーティファクトを生成した後、

  • なぜ wsdllocation 参照が必要なのですか?
  • 実行時に WSDL が必要なのはなぜですか?

いくつかの検証の理由がわかるかもしれませんが、それはオプションではないでしょうか?

4

1 に答える 1

4

概要: 設計の観点からは、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 実装に不可欠です。

于 2012-07-29T19:28:39.997 に答える