【问题标题】:Get Rest Response from Camel Route从骆驼路线获取休息响应
【发布时间】:2013-12-04 03:30:24
【问题描述】:

我正在使用骆驼从 SOAP Web 服务路由到 Rest Service。我的路线如下。

SOAP 服务 --> 处理器 A --> 休息 --> 处理器 B。

我正在使用 Exchange 模式,而 Rest 托管在 Jboss Server 中。我的问题是如何获得 Rest Response ( json string )。当我在处理器 B 中收到消息时,它包含输出消息或处理器 A。

  <camelContext xmlns="http://camel.apache.org/schema/spring" trace="true">
    <route>
        <from uri="cxf:bean:serviceA"/>
        <process ref="processorA" /> 
        <to uri="cxfrs:bean:serviceRest"/>
        <process ref="processorB"/>
    </route>
  </camelContxt>

我是骆驼新手。任何帮助将不胜感激。

【问题讨论】:

    标签: apache-camel


    【解决方案1】:

    您应该能够通过在消息中引用交换来获得 proxessorB 中的 REST 响应。

    【讨论】:

    • 不,我得到了 DTO,它是我从交易所传递给处理器 A 的。日志显示以下异常。 ... Caused by: com.fasterxml.jackson.databind.JsonMappingException: Can not construct instance of javax.ws.rs.core.Response, problem: abstract types either need to be mapped to concrete types, have custom deserializer, or be instantiated with additional type information at [Source: {"id":"e240513a-d997-490d-8d4c-9bc8e10391b6","data":{"key1":"value2"}}; line: 1, column: 1] at com.fasterxml.jackson.databind.JsonMappingException.from(JsonMappingException.java:163) [jackson-databind-2.0.2.jar:]
    【解决方案2】:

    在朋友的帮助下终于找到了答案。 fastxml jason 提供程序中的错误。我将 json 提供程序更改为 codehaus

    <cxf:rsClient id="serviceRest" address="http://localhost:8080/rest-test/rest"
                  serviceClass="org.apache.cxf.jaxrs.client.WebClient" loggingFeatureEnabled="true" >
        <cxf:providers>
            <ref bean="jasonProvider"/>
        </cxf:providers>
    </cxf:rsClient> 
    
    <bean id="jasonProvider" class="org.codehaus.jackson.jaxrs.JacksonJsonProvider" />
    

    现在我有 json 响应作为交换。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-09-17
    • 1970-01-01
    • 2019-06-29
    • 1970-01-01
    • 2017-08-04
    • 1970-01-01
    • 2018-09-05
    相关资源
    最近更新 更多