Hi

>From the stacktrace it seems its some kind of header that is causing
this jackson conversion as its .toString method is called.
What objects do you store in the headers? Maybe use tracer, or debug
your Camel application and see which header has the problem.



On Thu, Jan 4, 2018 at 8:01 PM, Charles Berger
<charlesb.yesm...@googlemail.com> wrote:
> Anyone able to help with this please?
>
> On Thu, Dec 21, 2017 at 6:03 PM, Charles Berger
> <charlesb.yesm...@googlemail.com> wrote:
>> Hi,
>>
>> I have the following route in my application which sends an email
>> based on a template filled out with data from the SingleImageModel
>> class:
>>
>>         from(ACTIVEMQ_EMAIL_QUEUE)
>>         .routeId(ROUTE_EMAIL_NOTIFICATIONS)
>>         .convertBodyTo(SingleImageModel.class)
>>         // set subject, from address & to address
>>         .setHeader("subject", constant(EMAIL_SUBJECT))
>>         .setHeader("to", simple("${body.email}"))
>>         .setHeader("from", constant(EMAIL_FROM))
>>         // format the message body
>>         .to(VELOCITY_EMAIL)
>>         .log("${body}")
>>         // send email
>>         .to(SMTP_URL)
>>         .end();
>>
>> When it tries to execute the SMTP step the message fails with the
>> following error:
>>
>> 2017-12-21 17:30:08,034 []
>> org.apache.camel.processor.DefaultErrorHandler ERROR - Failed delivery
>> for (MessageId: ID-iusa16025-local-1513877322283-0-13 on ExchangeId:
>> ID-iusa16025-local-1513877322283-0-11). Exhausted after delivery
>> attempt: 1 caught: org.apache.camel.TypeConversionException: Error
>> during type conversion from type: java.lang.String to the required
>> type: java.lang.String with value queue://emailQueue due
>> com.fasterxml.jackson.databind.JsonMappingException: No serializer
>> found for class java.util.Vector$1 and no properties discovered to
>> create BeanSerializer (to avoid exception, disable
>> SerializationFeature.FAIL_ON_EMPTY_BEANS) (through reference chain:
>> org.apache.activemq.command.ActiveMQQueue["reference"]->javax.naming.Reference["all"])
>>
>> The stacktrace is:
>>
>> org.apache.camel.TypeConversionException: Error during type conversion
>> from type: java.lang.String to the required type: java.lang.String
>> with value queue://emailQueue due
>> com.fasterxml.jackson.databind.JsonMappingException: No serializer
>> found for class java.util.Vector$1 and no properties discovered to
>> create BeanSerializer (to avoid exception, disable
>> SerializationFeature.FAIL_ON_EMPTY_BEANS) (through reference chain:
>> org.apache.activemq.command.ActiveMQQueue["reference"]->javax.naming.Reference["all"])
>> at 
>> org.apache.camel.impl.converter.BaseTypeConverterRegistry.createTypeConversionException(BaseTypeConverterRegistry.java:667)
>> at 
>> org.apache.camel.impl.converter.BaseTypeConverterRegistry.convertTo(BaseTypeConverterRegistry.java:158)
>> at org.apache.camel.component.mail.MailBinding.asString(MailBinding.java:717)
>> at 
>> org.apache.camel.component.mail.MailBinding.appendHeadersFromCamelMessage(MailBinding.java:398)
>> at 
>> org.apache.camel.component.mail.MailBinding.populateMailMessage(MailBinding.java:117)
>> at org.apache.camel.component.mail.MailProducer.process(MailProducer.java:58)
>> at 
>> org.apache.camel.util.AsyncProcessorConverterHelper$ProcessorToAsyncProcessorBridge.process(AsyncProcessorConverterHelper.java:61)
>> at 
>> org.apache.camel.processor.SendProcessor$2.doInAsyncProducer(SendProcessor.java:178)
>> at 
>> org.apache.camel.impl.ProducerCache.doInAsyncProducer(ProducerCache.java:445)
>> at org.apache.camel.processor.SendProcessor.process(SendProcessor.java:173)
>> at 
>> org.apache.camel.processor.interceptor.TraceInterceptor.process(TraceInterceptor.java:181)
>> at 
>> org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:548)
>> at 
>> org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:201)
>> at org.apache.camel.processor.Pipeline.process(Pipeline.java:138)
>> at org.apache.camel.processor.Pipeline.process(Pipeline.java:101)
>> at 
>> org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:201)
>> at 
>> org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:97)
>> at 
>> org.apache.camel.component.jms.EndpointMessageListener.onMessage(EndpointMessageListener.java:112)
>> at 
>> org.springframework.jms.listener.AbstractMessageListenerContainer.doInvokeListener(AbstractMessageListenerContainer.java:719)
>> at 
>> org.springframework.jms.listener.AbstractMessageListenerContainer.invokeListener(AbstractMessageListenerContainer.java:679)
>> at 
>> org.springframework.jms.listener.AbstractMessageListenerContainer.doExecuteListener(AbstractMessageListenerContainer.java:649)
>> at 
>> org.springframework.jms.listener.AbstractPollingMessageListenerContainer.doReceiveAndExecute(AbstractPollingMessageListenerContainer.java:317)
>> at 
>> org.springframework.jms.listener.AbstractPollingMessageListenerContainer.receiveAndExecute(AbstractPollingMessageListenerContainer.java:255)
>> at 
>> org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.invokeListener(DefaultMessageListenerContainer.java:1166)
>> at 
>> org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.executeOngoingLoop(DefaultMessageListenerContainer.java:1158)
>> at 
>> org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.run(DefaultMessageListenerContainer.java:1055)
>> at 
>> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
>> at 
>> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
>> at java.lang.Thread.run(Thread.java:745)
>>
>> The root cause appears to be this:
>>
>> Caused by: com.fasterxml.jackson.databind.JsonMappingException: No
>> serializer found for class java.util.Vector$1 and no properties
>> discovered to create BeanSerializer (to avoid exception, disable
>> SerializationFeature.FAIL_ON_EMPTY_BEANS) (through reference chain:
>> org.apache.activemq.command.ActiveMQQueue["reference"]->javax.naming.Reference["all"])
>> at 
>> com.fasterxml.jackson.databind.JsonMappingException.from(JsonMappingException.java:284)
>> 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.BeanPropertyWriter.serializeAsField(BeanPropertyWriter.java:704)
>>
>> From searching around I can see that it is possible to configure
>> Jackson's ability to see properties with no accessor methods (using
>> objectMapper.setVisibility(PropertyAccessor.FIELD, Visibility.ANY); as
>> explained here: http://www.baeldung.com/jackson-jsonmappingexception),
>> but how can I do that in my Camel configuration?
>>
>> Is that the right approach, or is there another way to solve this problem?
>>
>> Thanks,
>>
>> Charles.



-- 
Claus Ibsen
-----------------
http://davsclaus.com @davsclaus
Camel in Action 2: https://www.manning.com/ibsen2

Reply via email to