Java apachecamel:对路由启动的控制
我使用cxf和camel配置了一个restfulwebservice。我的配置xml是: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> <
<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;
}