Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/325.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java apachecamel:对路由启动的控制_Java_Rest_Cxf_Apache Camel - Fatal编程技术网

Java apachecamel:对路由启动的控制

Java apachecamel:对路由启动的控制,java,rest,cxf,apache-camel,Java,Rest,Cxf,Apache Camel,我使用cxf和camel配置了一个restfulwebservice。我的配置xml是: <jaxrs:server id="restContainer" address="/" staticSubresourceResolution="true"> <jaxrs:serviceBeans> <ref bean="FooBar" /> </jaxrs:serviceBeans> <jaxrs:providers> <

我使用cxf和camel配置了一个restfulwebservice。我的配置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> 

我担心的是当我点击服务器时。。camelContext立即接管,我的类中存在的方法一点也不受影响。。事实上,无论我对部分路由的响应是什么,都会发送回客户端。。现在,一种方法是为每个业务逻辑添加多个处理器。但我真的希望先执行我的方法,然后开始路由。。我该怎么做??此外,我还可以使用我想要的任何参数来访问我的服务器,即使这些参数是错误的,这意味着PoiDetailsRequest变量的数据类型是错误的,并且可以获得任何不属于PoiDetailsResponse的响应参数,这当然不是一件好事。。请提出一些建议。

如果要公开RS服务并使用服务bean,则不需要使用Camel cxfrs组件。您只需使用普通的CXF RS即可

驼峰cxfrs组件适用于您希望让RS服务路由直接进入驼峰路由的情况


如果您希望先执行方法,则可以通过使用ProducerTemplate从方法调用Camel,使用直接端点将消息发送到Camel路由。

如果您不能快速得到答案,我强烈建议将此问题的链接发布到Camel邮件列表。开发者通常反应很快。是的,克劳斯·易卜生也许会再次帮助你,他是一名单兵。首先,谢谢克劳斯,你帮了我很多。第二,出于好奇,POJO在这里会做得更好吗?另外,如果您看到我上面的驼峰上下文配置。。我打电话给另一个网络服务商,他们说在我的服务器被攻击后,谷歌需要网络服务的响应:谷歌返回我的服务器进行处理和验证,并将其进一步发送给最终用户。。对此有什么建议吗?克里斯蒂安·波斯塔最近写了一篇关于将REST与骆驼一起使用的博客文章。这可能值得一看:。为了讨论骆驼休息组件的改进和类似内容,骆驼邮件列表比stackoverflowok更好,现在我已经掌握了一些骆驼的概念。。我使用这两种方法1通过cxf和camel扩展rest服务,然后通过bean绑定通过POJO发送响应。2克劳斯在上述回答中建议的方法。
@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;
    }