[ 
https://issues.apache.org/jira/browse/CAMEL-10666?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15811476#comment-15811476
 ] 

ASF GitHub Bot commented on CAMEL-10666:
----------------------------------------

GitHub user davidecavestro opened a pull request:

    https://github.com/apache/camel/pull/1386

    CAMEL-10666: exposed uri param to enable inclusion of serializable headers

    As per [CAMEL-10666](https://issues.apache.org/jira/browse/CAMEL-10666) 
this is an enhancement proposal to restore the possibility of saving 
_Serializable_ headers within the exchange, simply setting to _true_ the new 
parameter _allowSerializedHeaders_.
    
    Please note this pull request is aimed to replace and obsolete 
https://github.com/apache/camel/pull/1370, in order to overcome issues on 
adding new options to minor releases (as 
[requested](https://github.com/apache/camel/pull/1370#issuecomment-271250250) 
by @oscerd).

You can merge this pull request into a Git repository by running:

    $ git pull https://github.com/davidecavestro/camel CAMEL-10666-master

Alternatively you can review and apply these changes as the patch at:

    https://github.com/apache/camel/pull/1386.patch

To close this pull request, make a commit to your master/trunk branch
with (at least) the following in the commit message:

    This closes #1386
    
----
commit bcc51dd0dc8ad609242510b3f21ba35f58f2b168
Author: Davide Cavestro <[email protected]>
Date:   2017-01-03T15:19:17Z

    CAMEL-10666: added uri param to control whether or not serializable headers 
should be included

----


> Serializable headers lost by JmsBinding
> ---------------------------------------
>
>                 Key: CAMEL-10666
>                 URL: https://issues.apache.org/jira/browse/CAMEL-10666
>             Project: Camel
>          Issue Type: Improvement
>          Components: camel-core, camel-jms
>    Affects Versions: 2.17.0
>         Environment: Apache Camel 2.17.0
>            Reporter: Barbara De Vido
>            Assignee: Andrea Cosentino
>            Priority: Minor
>             Fix For: Future
>
>
> In Camle 2.15.1 I was able to set a custom object in the header of my 
> exchange and as long as it was serializable and the container consuming the 
> route had this JVM options set 
> (-Dorg.apache.activemq.SERIALIZABLE_PACKAGES="*") and the queue had for both 
> producer and consumer the option "transferExchange=true" everything was 
> working fine.
> Now my company wanted to move to Camel 2.17.0.
> The same code do not work anymore. All serializable objects in header are 
> removed.
> To make a simple example, there is not need to have a custom object, it can 
> be a Calendar object.
>  I decided to debug the code, and I noticed a big change in the 
> org.apache.camel.impl.DefaultExchangeHolder class (camel-core). 
> It is used by the 
> org.apache.camel.component.jms.JmsBinding#createJmsMessage(org.apache.camel.Exchange,
>  java.lang.Object, java.util.Map<java.lang.String,java.lang.Object>, Session, 
> org.apache.camel.CamelContext). Which is in camel-jms
> JmsBinding methos invoke DefaultExchangeHolder.marshal(echange)
>  
> which is this:
> public static DefaultExchangeHolder marshal(Exchange exchange) {
>    return marshal(exchange, true, false); <---- THE FALSE PARAMETER AVOID THE 
> MARSHAL OF COMPLEX TYPE
> }
>  
> In Camel 2.1.5.1 the class is quite different and there is not any flag 
> avoiding the serializable headers, or at list I did not see any.
>  
> This is a big change and it is not documented since if I look at the Camel 
> page, it clearly states that if transferExchange is true than
> "You can transfer the exchange over the wire instead of just the body and 
> headers. The following fields are transferred: In body, Out body, Fault body, 
> In headers, Out headers, Fault headers, exchange properties, exchange 
> exception. This requires that the objects are serializable. Camel will 
> exclude any non-serializable objects and log it at WARN level.
> You must enable this option on both the producer and the consumer side, so 
> Camel will know that the payload is an Exchange and not a regular payload."
>  
> There is any workaround in order to make this whole thing work as is should 
> work? 
>  I know that there was a similar issue for levelDb
> https://issues.apache.org/jira/browse/CAMEL-9584
> Thank you
> Barbara



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to