Apache Camel:从驼峰tomcat servlet到cxfbean组件的路由

时间:2012-08-27 15:12:00

标签: apache-camel

问题描述: 我无法从我的camel servlet路由到cxfbean。路由初始化失败,并显示以下错误消息:

"Failed to create route route1 at: >>> To[cxfbean:fooEndpoint] <<< in route:
 Route[[From[servlet:///?servletName=BwsServlet]] -> [To[cxfb... because of Failed to resolve 
 endpoint: cxfbean://fooEndpoint due to: null".

没有cxfbean,servlet就可以正常运行。

更新:请注意,我打算使用Camel Cxf Bean Component而不是Camel Cxf Bean

我想要实现的目标: 我在Tomcat中运行camel servlet。我有一个bean来实现我的webservice接口(由CXF从WSDL生成)。我想在将XML消息体传递给这个webservice bean之前处理它。我想使用cxf bean组件而不是cxf端点bean,因为除了已经运行的camel servlet之外,我不希望我的cxf端点侦听网络端口。

我的代码如何: 我的camel-config.xml看起来像这样:

<bean id="bwsRouteBuilder" class="local.com.foo.BwsRouteBuilder"/>
<bean id="fooEndpoint" class="local.com.foo.FooBws"/>
<camel:camelContext id="bws">
    <camel:routeBuilder ref="bwsRouteBuilder"/>
</camel:camelContext>

我的路由构建器(用Java DSL编写)看起来像这样:

public void configure() throws Exception {
    from("servlet:///?servletName=BwsServlet")
    // some processing of message here
    .to("cxfbean:fooEndpoint");
}

更新:请注意上面代码中的cxfbean URI格式here

我的web.xml如下所示:

<servlet>
    <servlet-name>BwsServlet</servlet-name>
    <servlet-class>org.apache.camel.component.servlet.CamelHttpTransportServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
    <servlet-name>BwsServlet</servlet-name>
    <url-pattern>/*</url-pattern>
</servlet-mapping>

camel-cxf作为依赖项包含在我的pom.xml中。

我到目前为止寻求帮助的地方:我正在关注Apache Camel cxfbean description上的文档并遵循stackoverflow。我希望我的问题不是一个明智的回答,我是骆驼的新手。

非常感谢你的想法

1 个答案:

答案 0 :(得分:-1)

如果你想使用cxf bean,你必须在你的路线中写“cxf:bean:fooEndpoint”(你忘了:在cxf和bean之间)。

public void configure() throws Exception {
    from("servlet:///?servletName=BwsServlet")
    // some processing of message here
    .to("cxf:bean:fooEndpoint");
}