2012-04-11 22 views
3

私はCamelとCXFを使用してWebサービスを開発しており、 "コードファースト"アプローチを使用しています。 すべてが、単一のパラメータを持つメソッドでうまく動作します。ただし、複数のパラメータを持つメソッドは最初のパラメータのみを受け取り、他のメソッドはnullを解決します。例外はスローされません。複数のパラメータを持つCXF Webサービス

<route> 
    <from uri="cxf:bean:serverEndPoint" /> 
    <log message=">>> data is : ${body}"/> 
    <choice> 
    <when> 
     <simple>${in.header.operationName} == 'doSomething'</simple> 
     <to uri="bean:TestWSBean?method=doSomething"/> 
    </when> 
    ... 
</route> 

サーバーのエンドポイントは、以下のように定義されています:

<cxf:cxfEndpoint id="serverEndPoint" 
       address="http://localhost:9000/casServer/" 
       serviceClass="com.test.iface.TestWebService"> 
    <cxf:inInterceptors> 
     <ref bean="loggingInInterceptor"/> 
    </cxf:inInterceptors>     
    <cxf:outInterceptors> 
     <ref bean="loggingOutInterceptor"/> 
    </cxf:outInterceptors>     
</cxf:cxfEndpoint> 

と実装Bean自体:ここ

は私のルートである

@WebService 
public interface TestWebService { 
    public String doSomething(String one, String two); 
} 

私の質問はかなり基本的な、何複数のパラメータを送信できるようにする必要がありますか?

答えて

2

私はあなたがrequestwrappperアノテーションを使用する必要があると思います。 cxfのwsdl_firstの例で生成されたコードを見てください。アノテーションと適切なラッパークラスを生成します。

@RequestWrapper(ローカル名= "updateCustomer"、のtargetNamespaceは= "http://customerservice.example.com/"、クラス名= "com.example.customerservice.UpdateCustomer")クリスチャンは、それは私の作品

+0

感謝。しかし、多くの注釈が必要ですが、私の場合は受け入れられません(コードが生成されます)。私は、単一のクラスで複数のパラメータをラップするためにインターフェイスを再因子付けする必要があります。 – Daniel

+0

使い方は?ラクダにはルート内に送るためのヘッダーが必要ですか? –

関連する問題