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
         Environment: Windows XP, ActiveMQ
            Reporter: Bruce Elmore


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.

Reply via email to