You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@camel.apache.org by "Daniel Kulp (Updated) (JIRA)" <ji...@apache.org> on 2011/11/14 16:36:52 UTC

[jira] [Updated] (CAMEL-4542) Can't find splitter bean in registry using multiple camel contexts with "vm" endpoint

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

Daniel Kulp updated CAMEL-4542:
-------------------------------

    Fix Version/s: 2.8.3
    
> 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
>         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
>             Fix For: 2.8.3, 2.9.0
>
>         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