Hi Charles,

I'm not sure if I can help you out, but a couple of days ago I had an error 
with sending multiple REST requests to a remote server. I aggregated the 
responses values of each request in a complicated Map of Map of Maps structure 
that resided in the Camel header. After a couple of requests, the http 
handshake threw an exception. After some debugging I figured out: Camel uses 
the complete Camel Header to setup the http header. So the toString() result of 
my Map of Map of Maps went into the http request as a header, and that grew too 
large. What helped me out was to implement a custom headerFilterStrategy in 
which I managed to keep all of my custom header values out of the way.

Maybe this will help you...

Regards,
Christian

-----Ursprüngliche Nachricht-----
Von: Charles Berger [mailto:charlesb.yesm...@googlemail.com]
Gesendet: Freitag, 5. Januar 2018 13:30
An: users@camel.apache.org
Betreff: Re: Error sending email from Camel application

The route is taking properties from a POJO and building up a message to use to 
send an email.  I add the from, to & subject headers in the route which are 
just string values.  The message body is created using a Velocity template 
which extracts some values from the POJO.

I included some tracers in the route and here is the info that is logged by 
Camel immediately before calling the SMTP endpoint (I've anonymised some of the 
data):

2018-01-05 11:42:09,265 []
org.apache.camel.processor.interceptor.Tracer  INFO -
ID-iusa16025-local-1515152339856-0-11 >>> (emailNotifications) log[body] --> 
smtp://localhost <<< Pattern:InOnly, 
Headers:{breadcrumbId=ID-iusa16025-local-1515152339856-0-11,
Content-Type=application/json, downloadSuccessful=false, from=nore...@xxx.com, 
JMSCorrelationID=null, JMSCorrelationIDAsBytes=null, JMSDeliveryMode=2, 
JMSDestination=queue://emailQueue, JMSExpiration=0, 
JMSMessageID=ID:iusa16025.local-64140-1515152341226-7:1:2:1:1,
JMSPriority=4, JMSRedelivered=false, JMSReplyTo=null, 
JMSTimestamp=1515152529152, JMSType=null, JMSXGroupID=null, JMSXUserID=null, 
subject=EDM Image Manager Alert, to=x...@yyy.com}, BodyType:String, Body:Hi,

Image https://i.xxx.com/zzz.png for template Sample Template failed to upload 
to the CDN.

XXX Image Manager team.

The error message logged is this:

2018-01-05 11:42:09,312 []
org.apache.camel.processor.DefaultErrorHandler ERROR - Failed delivery for 
(MessageId: ID-iusa16025-local-1515152339856-0-13 on ExchangeId:
ID-iusa16025-local-1515152339856-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"])

Message History
---------------------------------------------------------------------------------------------------------------------------------------
RouteId              ProcessorId          Processor
                                                    Elapsed (ms) 
[emailNotifications] [emailNotifications] [activemq://emailQueue
                                                  ] [       153]
[emailNotifications] [convertBodyTo4    ]
[convertBodyTo[com.yesmail.edmimagebridge.model.SingleImageModel]
        ] [         2]
[emailNotifications] [setHeader1        ] [setHeader[subject]
                                                  ] [         0]
[emailNotifications] [setHeader2        ] [setHeader[to]
                                                  ] [         4]
[emailNotifications] [setHeader3        ] [setHeader[from]
                                                  ] [         0]
[emailNotifications] [to9               ] [velocity:errorEmailBody.vm
                                                  ] [       101]
[emailNotifications] [log10             ] [log
                                                  ] [         0]
[emailNotifications] [to10              ] [smtp://localhost
                                                  ] [        46]

Stacktrace
---------------------------------------------------------------------------------------------------------------------------------------
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 message suggests that I should disable 
SerializationFeature.FAIL_ON_EMPTY_BEANS but I'm not sure how to achieve that.  
I'm researching that just now and I was looking at doing something like this:

JacksonDataFormat df = new JacksonDataFormat(java.util.Vector.class);
df.disableFeature(SerializationFeature.FAIL_ON_EMPTY_BEANS);

in beforeStart method of my CamelContextLifecycle class.
----------------------------------------------------------------
innogy SE
Vorsitzender des Aufsichtsrates: Dr. Erhard Schipporeit
Vorstand: Uwe Tigges (Vorsitzender), Dr. Hans Buenting,
Dr. Bernhard Guenther, Martin Herrmann, Hildegard Mueller
Sitz der Gesellschaft: Essen, Eingetragen beim Amtsgericht Essen,
Handelsregister-Nr. HRB 27091, USt-IdNr. DE304171711

Reply via email to