[
https://issues.apache.org/jira/browse/CAMEL-4542?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Willem Jiang reassigned CAMEL-4542:
-----------------------------------
Assignee: Willem Jiang
> Can't find splitter bean in registry using multiple camel contexts with "vm"
> endpoint
> -------------------------------------------------------------------------------------
>
> Key: CAMEL-4542
> URL: https://issues.apache.org/jira/browse/CAMEL-4542
> Project: Camel
> Issue Type: Bug
> Components: camel-core
> Affects Versions: 2.8.0, 2.8.1, 2.9.0
> Environment: OS - Windows XP 32 Bit
> Java - Sun 1.6_26
> Camel - 2.8.0/2.8.1/2.9-SNAPSHOT
> Reporter: Bernd Fischer
> Assignee: Willem Jiang
> Labels: newbie, test-patch
> Attachments: MethodCallExpression.java.diff, testcase.zip
>
>
> The splitter component can use a bean with a "split method". It seems that
> this "split bean" is handled as expression and resolved lately using Camel
> Context from current exchange.
> If I send an exchange using a separate CamelContext ("client")
> <camelContext id="client" xmlns="http://camel.apache.org/schema/spring">
> </camelContext>
> to a route defined in another CamelContext ("server") using in-memory
> transport like "direct" or "vm"
> <camelContext id="server" xmlns="http://camel.apache.org/schema/spring">
> <route id="route02" trace="false" streamCache="false">
> <from uri="vm:route02"/>
> <split>
> <method bean ="stringLineSplitter" method="split"/>
> <log message="before sending: ${body}"/>
> <inOut uri ="vm:route04"/>
> <log message="after sending"/>
> </split>
> <to uri="mock:route02"/>
> </route>
> </camelContext>
> the test fails with
> "Cannot find class: stringLineSplitter" (Camel 2.8.0).
> "org.apache.camel.NoSuchBeanException - No bean could be found in the
> registry for: stringLineSplitter" (Camel 2.9-SNAPSHOT)
> If I understood Camel right it fails
> because it tries to resolve this bean based on client Camel Context
> which is still set at the current exchange send from "client" to "server" but
> it
> doesn't contain the bean.
> If I send an exchange using same "client" CamelContext to another route in
> "server" CamelContext involving "external" components like "jms" (ActiveMQ)
> <camelContext id="server" xmlns="http://camel.apache.org/schema/spring">
> <route id="route03" trace="false" streamCache="false">
> <from uri="jms:queue:route03"/>
> <split>
> <method bean ="stringLineSplitter" method="split"/>
> <log message="before sending: ${body}"/>
> <inOut uri ="vm:route04"/>
> <log message="after sending"/>
> </split>
> <to uri="mock:route03"/>
> </route>
> </camelContext>
> the test passed successfully. It seems that "jms" component creates a
> new exchange using "server" CamelContext.
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators:
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira