Apache的骆驼:控制线路启动(Apache Camel : Control over route

2019-10-16 15:04发布

我有使用CXF和骆驼构成的宁静web服务。 我的配置XML是:

<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立即接管,并出现在我的类中的方法完全不触及.. INFACT任何响应来自路线的我“到”部分是发送回客户端..现在一个方式是添加多个处理器为每个businesss逻辑。 但我真的希望有我的方法执行,然后再开始路线..我怎么能做到这一点? 另外我打我的,我想任何参数的服务器,即使他们是错的(是指PoiDetailsRequest变量错误的数据类型),并得到任何响应参数(这不是PoiDetailsResponse的一部分),这是ofcourse不是一件好事..请建议东西..

Answer 1:

你不需要使用骆驼cxfrs组件,如果要公开一个RS服务,使用该服务的bean。 你可以使用这个简单的CXF RS。

骆驼cxfrs组件是当你想直接让RS服务路由到骆驼的路线。

如果你希望你的方法先执行,那么你可以从你的方法调用骆驼使用ProducerTemplate将消息发送给使用直接端点的骆驼路线。



文章来源: Apache Camel : Control over route startup