当前位置: 首页 > 知识库问答 >
问题:

通过Apache Camel调用CXF Web服务

郭胤
2023-03-14

我正在尝试将Apache CXF与Apache Camel集成。骆驼的配置:

<cxf:cxfEndpoint id="authTest"
        address="/cxfAuth"
        serviceClass="com.test.AuthService" >
        <cxf:properties>
            <entry key="dataFormat" value="POJO" />
            <entry key="setDefaultBus" value="true" />
        </cxf:properties>
    </cxf:cxfEndpoint>

     <camel:camelContext trace="true">
        <camel:route>
            <camel:from uri="cxf:bean:authTest" />
            <camel:to uri="bean:routeExitResponseProcessor"/>
        </camel:route>
    </camel:camelContext>

现在,为了调用web服务上的特定操作,我使用以下方法:

<camel:route>
            <camel:from uri="direct:startAuthTest"/>
            <camel:setHeader headerName="getEmployee"> 
                <camel:constant>gid</camel:constant> 
            </camel:setHeader> 
            <camel:to uri="cxf:bean:authTest" />
            <camel:log message=">>> data is : ${body}"/>
            <camel:to uri="bean:routeExitResponseProcessor"/>
        </camel:route>

但是在包含上述配置后,我得到< code > WARN servlet controller:149-在服务器控制台上找不到对http://localhost:8080/cxf service/services/cxfAuth的Observer的请求,并且在浏览器上找不到我的webservice。

请帮忙。

共有2个答案

严嘉良
2023-03-14

在CXF终点

    <cxf:cxfEndpoint id="yourServiceCall"
    address="http://localhost:8181/yourservice/services/yourserviceport"
    wsdlURL="wsdl/yourwsdl.wsdl" xmlns:ns="http://service.your.com"
    endpointName="ns:YourServicePort" serviceName="ns:yourService"
    serviceClass="com.service.YourServicePortType">

在骆驼终点

   camelContext id="camelId" xmlns="http://camel.apache.org/schema/spring">
   <camel:dataFormats>
        <camel:jaxb contextPath="com.your.service" id="jaxb" />
    </camel:dataFormats>

    <route id="route1">
        <from uri="cxf:bean:yourServiceCall?dataFormat=PAYLOAD" />
        <camel:unmarshal ref="jaxb" />
        <log message="log: Called from cxf endpoint" />
        <!-- Your Logic -->
        <camel:process ref="ExitResponseProcessor"/>
        <camel:marshal ref="jaxb" />
    </camel:route>

基于Himansu Yadav评论:更新

 <camel:choice>
 <camel:when>
 <camel:simple>${body} is com.your.service.YourRequest</camel:simple>
 <!-- Your Logic or call any bean method with <camel:bean ref="YourBean " method="YourMethod" /      /> -->
 </camel:when>
 <camel:when> </camel:when>
 <camel:otherwise> </camel:otherwise>
 </camel:choice
廖永长
2023-03-14

您可以调用以下内容以获取正在调用的CXF操作名称……查看http://camel.apache.org/cxf.html了解更多详细信息

String operation = (String)in.getHeader(CxfConstants.OPERATION_NAME);

此外,请参见本单元测试的示例用法…

http://svn.apache.org/repos/asf/camel/trunk/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/CxfConsumerTest.java

 类似资料:
  • 问题内容: 我目前正在使用HTTP方法来调用一些URL,这将导致JIRA问题。 现在,我想使用Apache Camel,该如何使用? 我需要通过骆驼调用以下链接: 由于我是Camel的新手,因此也请提出一些解决方案和示例。 谢谢 问题答案: 您可以轻松使用CXFRS组件;如果出于某种原因需要使用HTTP组件进行操作,则也可以轻松地使用它: 当然,在到达路由的这一部分之前,您将需要使用标头来丰富您的

  • 24.3 使用Hessian通过HTTP远程调用服务 Hessian提供一种基于HTTP的二进制远程协议。它由Caucho开发的,可以在 http://www.caucho.com 找到更多有关Hessian的信息。 24.3.1 为Hessian和co.配置DispatcherServlet Hessian使用一个自定义Servlet通过HTTP进行通讯。使用Spring的DispatcherS

  • 1. 简介 在前面的文章中,我们分析了 Dubbo SPI、服务导出与引入、以及集群容错方面的代码。经过前文的铺垫,本篇文章我们终于可以分析服务调用过程了。Dubbo 服务调用过程比较复杂,包含众多步骤,比如发送请求、编解码、服务降级、过滤器链处理、序列化、线程派发以及响应请求等步骤。限于篇幅原因,本篇文章无法对所有的步骤一一进行分析。本篇文章将会重点分析请求的发送与接收、编解码、线程派发以及响应

  • 我正在尝试向异步路由发送消息,但它不起作用。我刚刚在github上创建了一个项目来模拟这个问题

  • 问题内容: 我正在这样发出Ajax请求: 在服务器端,我完成了一些如下代码: Ajax POST可以正常工作。我可以在mozilla的Web开发人员工具中看到,但是页面没有像我想象的那样重定向到其他页面。谁能告诉我我做错了什么? 还是无法通过Ajax 打电话? 问题答案: 是的,据我所知,您不能简单地从客户端检测重定向。 您可以做的一件事就是如何返回指示从服务器端代码进行重定向的内容。类似于以下J

  • 我需要将文件从文件夹同步到restendpoint。因此,如果文件被放置在特定文件夹中,我需要将该文件发送到接受多部分文件的RESTendpoint。我正在使用ApacheCamel来实现这一点。 RESTendpoint在Spring中编写,如下所示: 我是Camel的新手,并且已经弄清楚了如何通过构建路由并获取文件来轮询目录,但是我无法弄清楚如何使用此路由将此文件放入其余endpoint。这是