1

次のように wsdl を持つ onvif のクライアントを開発しようとしています。

http://www.onvif.org/onvif/ver10/device/wsdl/devicemgmt.wsdl

wsdl2java は正常に実行され、コードが生成されます。ただし、wsdl には要素がないため、使用するサービス クラスは生成されません。要素のインターフェイスのみを生成します。

Web サービスのエンドポイント URI は、サービスが提供されるデバイスごとに異なります。私の質問は、その URI が与えられた場合、portType インターフェイスのインスタンスを取得して、インターフェイスを使用して Web サービスと対話できるようにするにはどうすればよいですか?

ありがとう

4

1 に答える 1

2

生成されたスタブを利用するサービス クラスを作成する必要はありません。次のようなものを使用できます。

import org.apache.cxf.jaxws.JaxWsProxyFactoryBean;

...

protected <T> T getService(final Class<T> serviceClass, final boolean useSoap12) {
    final JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean();
    factory.setServiceClass(serviceClass);
    factory.setAddress(endpoint);
    if (useSoap12) {
        factory.setBindingId("http://schemas.xmlsoap.org/wsdl/soap12/");
    }
    return serviceClass.cast(factory.create());
}

serviceClass注釈付きインターフェース CXF が作成された場所。

于 2013-03-11T23:51:24.373 に答える