2012-01-12 8 views
4

私はCXFクライアントを作成しています。今私はセキュリティを統合する必要があります。 wsdl2javaから生成されるこれらのクラスは、MyService,MyServiceProxy,MyServiceHttpBindingStub,MyServiceHttpServiceおよびMyServiceHttpServiceLocatorです。ws-security用CXFクライアントのエンドポイント取得

これまでは、サービスにリクエストするためにMyServiceProxyクラスを使用していました。マニュアルに続いて、私は何とかEndpointを得なければならないので、私はこれを行うことができます。

手動で
endpoint.getOutInterceptors().add(wssOut); 

それは、このようClientProxyヘルパークラスを使用して説明しています:

Client client = ClientProxy.getClient(port); 
Endpoint endpoint = client.getEndpoint(); 

しかし、どのように適切に作成します私のクラスのport?私が行うとき:

MyService port = (new MyServiceHttpServiceLocator()).getMyServiceHttpPort(); 

とClientProxyメソッドにそのポートを置くが、私はランタイムエラーを取得する:私は渡すことができると思いますように

java.lang.IllegalArgumentException: not a proxy instance 

だから、どのように私はポートを取得することができますそれはClientProxy.getClient()に?

答えて

1

サービスのインスタンスを作成して、そのインスタンスからポートを取得しようとしましたか?下のApache CXFリンクの「ログメッセージ - プログラマティックなクライアント側のログ」セクションで、ポートを別の方法で取得する方法の例があります。使用しているCXFのバージョンによって、手順が異なる場合があります。可能であれば、設定ファイルを使用することをお勧めします。 samplesディレクトリにあるセキュリティの例を参照してください。 Debugging and Logging

+0

はラインとまったく同じ最初の2行ではありません:。 MyServiceでポート=(新しいMyServiceHttpServiceLocator())getMyServiceHttpPort (); – comco

1

SOAPポートが(キャストなしで)働く行き方:

MyService service= new MyService(SERVICE_URL, SERVICE_NAME); 
Operation port = service.getMyServiceSOAP12Port(); 
Client client = ClientProxy.getClient(port); 
Endpoint cxfEndpoint = client.getEndpoint(); 
関連する問題