0

私は .Net Webservice を持っており、JAX-WS を使用してそのスタブを生成しました (WSDL と XSD をローカルにダウンロードしました)。ここで、スタブを 1 つの jar (stubs.jar) にパッケージ化し、WSDL と XSD を別の jar (wsdl.jar) にパッケージ化しました。

次のようなスタブを使用します。

URL url = ServiceClient.class.getResource("MyService.wsdl"); 
MyService service = new MyService(url,new QName(namespaceURI,localName));
MyServicePortType portType = service.getMyServicePort();
BindingProvider bp = (BindingProvider) portType;
//WSDL_URL is the actual endpoint address
bp.getRequestContext().put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, WSDL_URL);

すべて正常に動作しますが、デバッグ中にポート タイプ オブジェクトの作成に時間がかかることに気付きました。

また、デバッグ時のポート タイプ オブジェクトは、WSDL URL をリモート URL として表示します (Binding Provider オブジェクトにタイプ キャストされる前であっても)。

ポート型オブジェクトの WSDL の URL が変更された理由を特定できません。誰でも、私が理解するのを手伝ってください。

また、ポート タイプ オブジェクトの作成にかかる時間を短縮するためにできることはありますか。

前もって感謝します!

4

1 に答える 1

0

1 回目MyServiceは WSDL 文書ファイル (ローカル・ファイル) から URL を取得します。ファイルをロードするため、時間がかかります。これは、アプリケーションの開始時にのみ行う必要があります。

MyService service = new MyService(url, new QName(namespaceURI, localName));

次に、エンドポイント URL をカスタマイズします。

bp.getRequestContext().put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, WSDL_URL);

URL が同じ場合は、この手順を回避できる可能性があります。これは、開発環境から本番環境に変更する場合など、URL が異なる場合に非常に役立ちます。

于 2013-09-07T03:48:42.280 に答える