You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@camel.apache.org by Martin Lichtin <li...@yahoo.com.INVALID> on 2017/11/01 21:21:11 UTC

Camel REST: jackson.databind.JsonMappingException: Infinite recursion (StackOverflowError)

I'm running into a jackson.databind.JsonMappingException: Infinite recursion (StackOverflowError)
with a REST route that uses bindingMode="json" to marshal/unmarshal. It loops like:

     ...
     at com.fasterxml.jackson.databind.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase.java:689)
     at com.fasterxml.jackson.databind.ser.BeanSerializer.serialize(BeanSerializer.java:155)
     at com.fasterxml.jackson.databind.ser.std.MapSerializer.serializeFields(MapSerializer.java:633)
     at com.fasterxml.jackson.databind.ser.std.MapSerializer.serialize(MapSerializer.java:536)
     at com.fasterxml.jackson.databind.ser.std.MapSerializer.serialize(MapSerializer.java:30)
     at com.fasterxml.jackson.databind.ser.BeanPropertyWriter.serializeAsField(BeanPropertyWriter.java:704)
     at com.fasterxml.jackson.databind.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase.java:689)
     at com.fasterxml.jackson.databind.ser.BeanSerializer.serialize(BeanSerializer.java:155)
     ...
     (not seeing full stack unfortunately)

What's strange is that outside of Camel, I can use a Jackson ObjectWriter just fine to serialize the same object.

So - wanted to ask for pointers where and how Camel (2.18.5) creates and configures its ObjectWriter
that is used in RestConsumerBindingMarshalOnCompletion?

- Martin


Re: Camel REST: jackson.databind.JsonMappingException: Infinite recursion (StackOverflowError)

Posted by Martin Lichtin <li...@yahoo.com.INVALID>.
To make REST use my own ObjectMapper, I try below but it doesn't work.
Anyone have an example that does?

   <bean id="objectMapper" class="my.ObjectMapper">
   </bean>

   <camelContext id="rest" xmlns="http://camel.apache.org/schema/blueprint">

     <dataFormats>
       <json id="json" library="Jackson" objectMapper="objectMapper" />
     </dataFormats>

     <restConfiguration component="servlet" bindingMode="json" >
     ....

Thanks for a hint.

On 01.11.2017 22:21, Martin Lichtin wrote:
> I'm running into a jackson.databind.JsonMappingException: Infinite recursion (StackOverflowError)
> with a REST route that uses bindingMode="json" to marshal/unmarshal. It loops like:
>
>     ...
>     at com.fasterxml.jackson.databind.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase.java:689)
>     at com.fasterxml.jackson.databind.ser.BeanSerializer.serialize(BeanSerializer.java:155)
>     at com.fasterxml.jackson.databind.ser.std.MapSerializer.serializeFields(MapSerializer.java:633)
>     at com.fasterxml.jackson.databind.ser.std.MapSerializer.serialize(MapSerializer.java:536)
>     at com.fasterxml.jackson.databind.ser.std.MapSerializer.serialize(MapSerializer.java:30)
>     at com.fasterxml.jackson.databind.ser.BeanPropertyWriter.serializeAsField(BeanPropertyWriter.java:704)
>     at com.fasterxml.jackson.databind.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase.java:689)
>     at com.fasterxml.jackson.databind.ser.BeanSerializer.serialize(BeanSerializer.java:155)
>     ...
>     (not seeing full stack unfortunately)
>
> What's strange is that outside of Camel, I can use a Jackson ObjectWriter just fine to serialize the same object.
>
> So - wanted to ask for pointers where and how Camel (2.18.5) creates and configures its ObjectWriter
> that is used in RestConsumerBindingMarshalOnCompletion?
>
> - Martin