【发布时间】:2017-04-02 02:56:30
【问题描述】:
在 Apache Camel 中,我公开了一个 REST 服务,将其输入用于调用 SOAP 服务,然后我想将 SOAP 响应编组为 JSON。我的 RouteBuilder 大致如下:
rest("/api")
.get("/client/{id}")
.to("direct:getClient");
from("direct:getClient")
.log(LoggingLevel.INFO, "Getting client with id ${id}")
.process(new GetClientProcessor())
.marshal().jaxb()
.to("spring-ws:http://localhost:9000/searchClient?soapAction=search")
.process(new ClientProcessor())
.marshal().json(JsonLibrary.Jackson);
在将结果编组为 JSON 时出现以下错误:
com.fasterxml.jackson.databind.JsonMappingException: No serializer found for class org.apache.camel.converter.stream.InputStreamCache and no properties discovered to create BeanSerializer (to avoid exception, disable SerializationFeature.FAIL_ON_EMPTY_BEANS)
at com.fasterxml.jackson.databind.JsonMappingException.from(JsonMappingException.java:275)
at com.fasterxml.jackson.databind.SerializerProvider.mappingException(SerializerProvider.java:1110)
at com.fasterxml.jackson.databind.SerializerProvider.reportMappingProblem(SerializerProvider.java:1135)
at com.fasterxml.jackson.databind.ser.impl.UnknownSerializer.failForEmpty(UnknownSerializer.java:69)
at com.fasterxml.jackson.databind.ser.impl.UnknownSerializer.serialize(UnknownSerializer.java:32)
at com.fasterxml.jackson.databind.ser.DefaultSerializerProvider.serializeValue(DefaultSerializerProvider.java:292)
...
我知道为什么会这样,因为我默认开启了流缓存。但是,我不知道如何在不关闭流缓存的情况下解决此问题。
我已经搜索过 Camel 文档、邮件列表和论坛,但目前还没有找到有用的信息。
【问题讨论】:
-
查看stackoverflow.com/questions/48798907/… 中的答案,这对我有帮助,而且这似乎是一个重复的问题。
-
这能回答你的问题吗? JsonMappingException with Apache Camel
标签: java json jackson apache-camel marshalling