如何在Camel中使用多个CXF端点来调用Web服务?

时间:2015-07-16 20:25:09

标签: java spring web-services apache-camel cxf

我有两个端点:

CXF_FIRST_ENDPOINT="cxf:bean:cxfEndpoint?{address=first_address}&serviceClass=com.service.class.first"
CXF_SECOND_ENDPOINT="cxf:bean:cxfEndpoint?{address=second_address}&serviceClass=com.service.class.second"

如何在定义端点后实现两个单独的Web服务调用。如果我同时使用这两个端点并使用路由使用端点,则其中一个端点将覆盖另一个端点,并且我只能使用一个端点。如果我评论另一个端点,它的运行成功。但是我需要同时使用它们。我正在使用messageContentList进行Web服务响应:

MessageContentsList result = (MessageContentsList) exchange.getIn().getBody();

谢谢,如果您需要更多信息,请告诉我

这是路线定义:

from("direct:paymentInfo").routeId("PaymentInfo") 
    .bean(billingServiceProcessor, "processBillingPaymentRequest") 
    .to(CXF_BILLINGSERVICE_ENDPOINT)
    .bean(billingServiceProcessor, "processBillingPaymentResponse")
    .end();

from("direct:Holidays").routeId("HolidayRetrieval") 
    .bean(entityProcessor, "processHolidaysRequest") 
    .to(CXF_ENTITYSERVICE_ENDPOINT)
    .bean(entityProcessor, "processHolidaysResponse")
    .end();

1 个答案:

答案 0 :(得分:1)

我解决了这个问题。我发现两个端点都使用了camel-config.xml中定义的相同beanid(cxfEndpoint)。

我在camel-config.xml中定义了另一个id cxfEndpoint1并将其用于我的端点,这解决了这个问题。这两个网络服务电话都没有麻烦。

<bean id="cxfEndpoint" class="org.apache.camel.component.cxf.CxfEndpoint" />
<bean id="cxfEndpoint1" class="org.apache.camel.component.cxf.CxfEndpoint"/>

以下是各自的终点:

CXF_FIRST_ENDPOINT="cxf:bean:cxfEndpoint?{address=first_address}&serviceClass=com.service.class.first"
CXF_SECOND_ENDPOINT="cxf:bean:cxfEndpoint1?{address=second_address}&serviceClass=com.service.class.second"

谢谢,