【问题标题】:Rest camel passing objects between endpoints休息骆驼在端点之间传递对象
【发布时间】:2017-07-26 21:44:39
【问题描述】:

概述
我的骆驼设置调用了两种服务方法。第一个响应传递给第二个响应,然后将最终响应输出为 json 网页。相当简单,没什么太复杂的。

进一步细分以提供更多背景信息。 方法_1。接受scanId。这工作正常。它生成一个名为 ScheduledScan .class 的对象 方法_2。接受 ScheduledScan .class 的对象先前实例并返回 ConvertedScans 扫描的列表。然后想显示说列表

代码说明

@Override
public void configure() throws Exception {

    restConfiguration().bindingMode(RestBindingMode.json);

    rest("/publish")
       .get("/scheduled-scan/{scanId}")
       .to("bean:SentinelImportService?method=getScheduledScan").outType(ScheduledScan .class)
       .to("bean:SentinelImportService?method=convertScheduledScan");
}

被调用的方法如下所示

ScheduledScan  getScheduledScan(@Header("scanId") long scanId);
List<ConvertedScans >  convertScheduledScan(@Body ScheduledScan  scheduledScans);

返回以下错误

没有可用的主体类型:路径。 .ScheduledScan 但具有价值:
类型:java.lang.String on:HttpMessage@0x63c2fd04。原因:没有可用的类型转换器

以下运行没有错误,即没有方法 2。所以我认为我几乎就在那里。

rest("/publish")
.get("/scheduled-scan/{scanId}")
.to("bean:SentinelImportService?method=getScheduledScan");

现在从阅读错误来看,我好像传入的是 HttpMessage 而不是 java 对象?我有点困惑下一步该怎么做?非常感谢任何建议。

我发现了一些与此消息类似的问题。但是我希望将 java 对象直接传递到服务方法中。

camel-rest-bean-chaining

how-to-share-an-object-between-methods-on-different-camel-routes

【问题讨论】:

    标签: spring apache-camel message-queue


    【解决方案1】:

    您应该将outType 设置为最后一个输出,例如REST 响应是什么,它是一个列表/数组,而不是一个单一的pojo。所以请改用.outTypeList(ConvertedScans.class)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-06-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-19
      • 2019-07-07
      • 2021-12-01
      • 1970-01-01
      相关资源
      最近更新 更多