camel-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Claus Ibsen (JIRA)" <j...@apache.org>
Subject [jira] Updated: (CAMEL-653) Bean method lost when sending a message from one JMS queue to another
Date Wed, 02 Jul 2008 05:34:00 GMT

     [ https://issues.apache.org/activemq/browse/CAMEL-653?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]

Claus Ibsen updated CAMEL-653:
------------------------------

    Fix Version/s: 1.4.0
                       (was: 1.5.0)

I am adding a workaround special for BeanProcessor so we can send {{org.apache.camel.MethodName}}
over the wire, and being backwards compatible so end-users doesn't need to change their code.

The workaround is to send {{org.apache.camel.MethodName}} as {{org_apache_camel_MethodName}}
and have BeanProcessor fallback to the underscore if the regular key wasn't found.

> Bean method lost when sending a message from one JMS queue to another
> ---------------------------------------------------------------------
>
>                 Key: CAMEL-653
>                 URL: https://issues.apache.org/activemq/browse/CAMEL-653
>             Project: Apache Camel
>          Issue Type: Bug
>          Components: camel-jms
>    Affects Versions: 1.3.0, 1.4.0
>         Environment: Windows XP, ActiveMQ
>            Reporter: Bruce Elmore
>            Assignee: Claus Ibsen
>             Fix For: 1.4.0
>
>
> I noticed a problem in JmsBinding.java. If Camel has read a JMS message from a queue
and that message has a bean method specified in the header ("org.apache.camel.MethodName"),
the method header will removed if that message is written to another queue. Here's the offending
code: 
>     protected boolean shouldOutputHeader(org.apache.camel.Message camelMessage, String
headerName, 
>                                          Object headerValue) { 
>         return headerValue != null && !getIgnoreJmsHeaders().contains(headerName)

>                && ObjectHelper.isJavaIdentifier(headerName); 
>     } 
> "org.apache.camel.MethodName" fails the check isJavaIdentifier and is excluded from the
headers written to the new message. I'm not sure the purpose of this check, but this might
be an unintended side effect. 
> The call chain is something like this: 
> JmsProducer.process 
> JmsBinding.makeJmsMessage 
> JmsBinding.appendJmsProperties 
> JmsBinding.shouldOutputHeader 
> Update: Experimenting later with WebLogic's JMS, I noticed that WebLogic (9.2) does not
allow this header name. Maybe this was the original motivation for this check. In order to
be compatible with WebLogic, perhaps the method header name should changed to something like
"CamelMethod". I believe this would correct both problems.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


Mime
View raw message