2012-04-23 123 views
0

我有一個使用cxf和camel配置的restful webservice。我的配置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的類:

@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; 
    } 

我擔心的是,當我打我的服務器.. camelContext立即接管並且我的課程中存在的方法完全沒有觸及......事實上,從我的「到」部分路由發出的任何響應都會發回給客戶端..現在,有一種方法是爲每個業務邏輯添加多個處理器。但我真的想先讓我的方法執行,然後開始路由......我該怎麼做?另外我可以用我想要的任何參數來打我的服務器,即使它們錯了(意味着PoiDetailsRequest的變量的錯誤數據類型),並獲得任何響應參數(這些參數不是PoiDetailsResponse的一部分),但這並不是一件好事。建議的東西..

+0

如果您沒有很快得到答案,我會強烈建議在這個問題上發佈一個鏈接到駱駝郵件列表。開發人員通常會很快做出迴應。 http://camel.apache.org/mailing-lists.html – JustinKSU 2012-04-23 14:31:08

+1

是的,克勞斯易卜生可能會幫助你,他是一個人的軍隊 – 2012-04-23 14:46:17

回答

0

如果你想公開RS服務並使用服務bean,你不需要使用駱駝cxfrs組件。你可以使用普通的CXF RS。

駱駝cxfrs組件用於當你想讓RS服務路線直接進入駱駝路線。

如果您希望先執行您的方法,那麼您可以通過使用ProducerTemplate從您的方法調用Camel向使用直接端點的Camel路由發送消息。

+0

首先,感謝克勞斯你幫了我很多。其次,出於好奇,POJO製作會在這裏做得更好嗎?此外,如果你看到我的上述駱駝上下文配置..我打電話給另一個web服務(可以說谷歌)後我的服務器被擊中,我需要響應(從web服務:谷歌)回到我的服務器處理和驗證,併發送它進一步對最終用戶..所以對此有什麼建議? – Sikorski 2012-04-24 05:40:57

+0

Christian Posta最近寫了一篇關於在Camel中使用REST的博客文章。這可能值得檢查:http://www.christianposta.com/blog/?p=229。 – 2012-04-26 10:27:26

+0

爲了討論改進和喜歡駱駝REST組件,那麼駱駝郵件列表是一個比stackoverflow更好的地方 – 2012-04-26 10:28:02

相關問題