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.