2011-09-16 15 views
5

Webサービスを記述する中央のWSDLファイルがあります。 CXFを使用してクライアントコードを生成しますが、このコードは1つのエンドポイントにバインドされているようです。 WSDLを使用するCXFクライアントを作成するにはどうすればよいですか?エンドポイントを指定できる場所はどこですか?エンドポイントを同じWSDを実装するURLに変更する方法はありますか:動的エンドポイントを使用してCXF Webサービスクライアントを作成する方法は?

答えて

9

otherサービスで同じWSDLが実装されている場合は、MyClientServiceオブジェクトを作成するときに、URLを新しいサービスのWSDLに渡してコンストラクタに渡すことができます。ほとんどのサービスはwsdlをwsdlに公開していますので、それを使って "うまくいく"かもしれません。

代わりに、経由でエンドポイントURLをオーバーライドすることができます。

proxyMyClientServiceオブジェクトです
((BindingProvider)proxy).getRequestContext().put(BindingProvider.ENDPOINT_ADDRESS_URL, "http://my.service.url.com/...") 

+0

「他の」サービス実装は、実際には同じwsdlを実装します。私は生成されたコードをチェックし、私にオブジェクトを与えるファクトリオブジェクトを持っています。私はどのようにURL sofarを指定する方法については見ていない..それについてのヒント? – Marco

1

あなたはCXF 2.6.1で動的に作業する

JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean(); 

factory.setServiceClass(ChangeStudentDetails.class); 
factory.setAddress("http://localhost:8081/CXFTutorial/ChangeStudent"); 
+1

'factory.create()'の呼び出しを忘れていませんか? – Zarathustra

4

サービスを呼び出すためのJaxWsProxyFactoryBeanを使用することができます

Client client = ClientProxy.getClient(port); 
client.getRequestContext().put(Message.ENDPOINT_ADDRESS, "http://some-valid-endpoint") ; 
0

javax.xml.ws.WebServiceException:WSDLを見つけることができませんでした。 WebメソッドXXXXのバインディング操作情報。 com.sun.proxyで
org.apache.cxf.jaxws.JaxWsClientProxy.invokeで (JaxWsClientProxy.java:125)
。$ Proxy82.getUser(不明なソース)

このエラーは、追加が発生した場合アノテーションWebサービスは、すでにサービス側で開発されているクライアント側のインターフェイスに接続します。

私はこの問題に直面しました.CXFでSpringを設定しました。私はすでにサービスを開発し、それをクライアントから呼び出しています。

希望すると、これが役立ちます。

関連する問題