В Apache Camel Я предоставляю услугу REST, беру ее вход для вызова службы SOAP, а затем я хотел бы маршалировать ответ SOAP на JSON. Моя RouteBuilder выглядит примерно так:Apache camel не может маршалировать JSON от InputStreamCache
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)
...
Я знаю, почему это происходит, как я включил кэширование потока по умолчанию. Тем не менее, я не знаю, как исправить это без отключения потокового кэширования.
Я искал документацию Верблюда, списки рассылки и форумы, но я не нашел полезной информации о софаре.