休息骆驼在端点之间传递对象

Rest camel passing objects between endpoints

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

进一步细分以提供更多背景信息。 Method_1。接收 scanId。这工作正常。它生成一个名为 ScheduledScan 的对象。class Method_2。获取对象先前的 ScheduledScan 实例。class 和 returns 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 上:HttpMessage@0x63c2fd04。原因:没有可用的类型转换器

以下运行没有错误,即没有方法 2。所以我想我快到了。

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

现在,从读取错误来看,我似乎传入了一个 HttpMessage 而不是 java 对象?我有点困惑下一步该做什么?非常感谢任何建议。

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

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

您应该将 outType 设置为最后一个输出,例如 REST 响应是什么,即 List/Array 而不是单个 pojo。因此,请改用 .outTypeList(ConvertedScans.class)