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

调用rest服务的骆驼无法检索返回对象DTO:JsonMappingException,没有CachedOutputStream的序列化程序

宗冠宇
2023-03-14

我有一个包含两个模块的maven多模块项目:

  • 运行rest服务的springboot(在端口8081上)
  • 充当代理并调用rest服务(端口8080)的骆驼项目

在camel项目中,我创建了一个如下所示的路由构建器:

restConfiguration().component("servlet")
  .bindingMode(RestBindingMode.json)
  .dataFormatProperty("prettyPrint", "true")
  .dataFormatProperty("json.in.disableFeatures", "FAIL_ON_EMPTY_BEANS")
  .contextPath("/").port(8080)
  .apiProperty("cors", "true");

  rest("/car").description("Cars rest service")
    .consumes("application/json").produces("application/json")
    .get("/{id}").description("Find car by id")
    .param().name("id").type(RestParamType.path)
    .description("The id of the car to get")
    .dataType("int").endParam()
    .to("http://localhost:8081?bridgeEndpoint=true");
@RequestMapping(value = "/car/{id}", method = RequestMethod.GET)
public ResponseEntity<CarDto> findOne...

共有1个答案

潘志国
2023-03-14

camel中定义的RESTendpoint使用GET方法生成一个空正文的消息。这与Spring控制器的不同之处在于,控制器检索的是camel路由中缺少的CarDTO实例。

在公开的restendpoint接收到请求后,它应该转换为另一种类型,因此您的最终endpoint使用JSON,应该插入以下转换步骤

.marshal().json(JsonLibrary.Jackson, CarDTO.class)

我想补充的最后一点是,由于消费者和生产者都处理由camel-http组件定义的相同的头,如果消费的endpoint返回的头在提交给产生的endpoint时会产生影响,那么这似乎很容易出错。当消费的HTTP消息转发到生成的HTTP消息时,应该考虑到这一点。

 类似资料:
  • 我试图用序列化方法解组一个bean,它不是当前的bundle,而是一个commons components bundle。 当骆驼尝试解组我的豆子时,我收到以下错误: 22:43:11,865|ERROR|nModule-thread-1|默认错误处理程序|89-0_33-核心-0_33-06-11|交付失败的交换ID: ID-ITEM-64684-49962-1354223882336-2。交付

  • 我正在研究spring MVC,并使用Apache camel来集成外部服务。我想使用Apache Camel route进行Webservice调用。 就像我的本地REST服务(http://localhostsmiliex.xx:8080/users)从外部REST服务获取数据(http://xxx:000/users)并希望通过路由获取外部数据。 哪个Apache组件适合Jetty或prod

  • 我使用spring boot和thymeleaf我试图保存一个对象列表。 我得到这个结果 ERREUR:{“时间戳”:“2018-06-29T15:36:58.427+0000”,“状态”:400,“错误”:“错误请求”,“消息”:“JSON解析错误:不能反序列化的START_OBJECT令牌外的实例;嵌套异常是com.fasterxml.jackson.databind.exc.mismatch

  • 我正在使用java spark API编写一些测试应用程序。我使用的是一个不扩展可序列化接口的类。因此,为了使应用程序正常工作,我使用kryo序列化器序列化类。但我在调试时观察到的问题是,在反序列化过程中,返回的类对象变为null,并反过来抛出一个null指针异常。这似乎是关闭的问题,事情是错误的,但不确定。因为我是新的这种系列化,我不知道从哪里开始挖掘。 下面是我正在测试的代码: 下面是我正在序

  • 目前我们在Drools Camel Server 5.5.0;我们想升级到新版本。当我检查Drools下载页面时,它显示6.4是最新的,并且没有Drools Camel服务器版本。我发现为KIE执行服务器提供的描述与drools Camel Server特性相似。Drools服务器是否重命名为KIE执行服务器?