私は、WSDLからApache CXFを使用してクライアントスタブアプリケーションを作成しました。このプロセスは比較的簡単でした。私はSoapUIインターフェースの中でそれをやった。私はWSDLの場所を指定し、CXFにクライアントスタブを生成し、大丈夫と命じました。Apache CXFでのクラス生成はどのように機能しますか?
次に、Eclipseにプロジェクトをインポートし、Apache CXFライブラリを追加し、セキュリティオプション、証明書などを設定しました。
私は、私のwebserviceにいくつかのテストコールを使ってメインを書いてくれました... それは働いた。
私の問題は、それがなぜ機能するのかわかりません。具体的には、Eclipseで実行したときに、CXFクラスが呼び出されていることをデバッグ出力が明確に示しています。私main()
で
INFO: Loaded configuration file cxf.xml.
と org.apache.cxf.service.factory.ReflectionServiceFactoryBean buildServiceFromWSDL
私は
MyServices ss = new MyServices(wsdlURL, SERVICE_NAME);
port = ss.getWSHttpBindingMyService();
を呼び出しています。しかしMyServices
クラスはjavax.xml.ws.Service
を拡張し、CXFにヒント何もありません。
wsdl2javaもMyService
インターフェイスと同じパッケージ内にあるMyServiceImpl
クラスを生成しました。それは良い候補のように見えます。私のmain()
では、port.someMethod(someRequest)
のようなものを書くことができます。 someMethod
をCtrlキーを押しながらクリックして実装に従うと、実際にはMyServiceImpl
クラスになりますが、そこにはダミーコードしかありません。
public Boolean someMethod(SomeRequest request) {
LOG.info("Executing operation");
System.out.println(request);
try {
Boolean _return = null;
return _return;
} catch (java.lang.Exception ex) {
ex.printStackTrace();
throw new RuntimeException(ex);
}
}
したがって、どの実装を使用するかはランタイムに指示する必要があります。しかし、私はそれがどこにあるのか、どれがどれであるのか理解できません。あなたは、クライアントのコードを生成するためにCXFやWSDL2Javaのを使用するかどうか
おかげ
こんにちは、私は何を求めていることは、それは、クライアント側でCXF実装で生成されたJavaコードをフックアップない方法です。 – TXV
コード内にクライアントインスタンスを作成していますか。つまり、org.apache.cxf.endpoint.Client client = org.apache.cxf.frontend.ClientProxy .getClient(port); –
はい、私は 'Client client = clientProxy.getClient(service);' – TXV