2012-04-23 23 views
0

私は、cxfとcamelを使って快適なウェブサービスを設定しています。マイ設定XMLは次のとおりです。Apache Camel:ルートスタートアップの制御

<jaxrs:server id="restContainer" address="/" staticSubresourceResolution="true"> <jaxrs:serviceBeans> 
<ref bean="FooBar" /> 
    </jaxrs:serviceBeans> 
<jaxrs:providers> 
<bean class="org.apache.cxf.jaxrs.provider.JSONProvider"> 
    <property name="dropRootElement" value="true" /> 
<property name="supportUnwrapped" value="true" /> 
</jaxrs:providers> 
<camelcxf:rsServer id="rsServer" address="/" serviceClass="com.camel.example.FooBar" /> <camel:camelContext id="camelContext-1"> 
<camel:route> 
<camel:from uri="cxfrs:bean:rsServer" /> 
<camel:to uri="http://localhost:8080/Google/rest/search" /> 
</camel:route> 
</camel:camelContext> 

今私はサービスとして公開し、このようなものですされFooBarのクラスがあります。私の関心は、私は自分のサーバーを打ったとき。.. camelContextがすぐに引き継ぐことです

@Service("Demo") @Path("/foo/bar") public class FooBar{ 

     @POST @Produces(MediaType.APPLICATION_JSON) @Consumes(MediaType.APPLICATION_JSON) public PoiDetailsResponse poiGetDetails(
      PoiDetailsRequest json) 
    { 
     System.out.println(json.getUname()); 
     System.out.println(json.getDeviceid()); 
     //do some validation and some business logic 
     //return accordingly; 
    } 

を私のクラスに存在するメソッドはまったく触れられていません。ルートの "to"部分から何らかの応答が来ても、実際にクライアントに返されます。ここで私はすべてのビジネスロジックに対して複数のプロセッサを追加します。しかし、私は本当に私のメソッドを最初に実行し、その後ルートを開始したい..どのように私はこれを行うことができますか?また、私は彼らが間違っている(PoiDetailsRequestの変数の間違ったデータ型を意味する)、任意の応答パラメータ(PoiDetailsResponseの一部ではない)を取得しても、何かを提案してください。

+0

すぐに回答が得られない場合は、この質問へのリンクをCamelメーリングリストに投稿することを強くおすすめします。開発者は通常、非常に迅速に対応します。 http://camel.apache.org/mailing-lists.html – JustinKSU

+1

YesとClaus Ibsen多分あなたを再び助けるために、彼は一人の軍隊です –

答えて

0

RSサービスを公開してサービスBeanを使用する場合は、Camel cxfrsコンポーネントを使用する必要はありません。これには単純なCXF RSを使うことができます。

Camel cxfrsコンポーネントは、RSサービスをCamelルートに直接ルーティングさせる場合に使用します。

最初にメソッドを実行する場合は、ProducerTemplateを使用してCamelを呼び出すことで、直接エンドポイントを使用してCamelルートにメッセージを送信できます。

+0

まず第一に、ありがとうClausは私をたくさん助けました。第二に、好奇心からだけ、POJOの生産はここでどんなに良いでしょうか?また、あなたが私の上記のラクダのコンテキスト設定を参照している場合..私は別のwebservice(私のサーバーがヒットし、私は処理と検証のために私のサーバーに返信(webserviceから:google)応答が必要な後google)さらにエンドユーザーに..これに関する任意の提案ですか? – Sikorski

+0

Christian Postaは最近CamelでRESTを使ってブログエントリを書きました。それはチェックアウトの価値があるかもしれません:http://www.christianposta.com/blog/?p=229。 –

+0

そして、Camel RESTコンポーネントの改善点などについて議論するために、Camelメーリングリストはstackoverflowよりも良い場所です –