On Mon, Jun 21, 2010 at 6:08 PM, Bernd Schuller
<b.schul...@fz-juelich.de> wrote:
>
> Hi,
>
> I try to setup a Camel (version 2.3.0) route involving custom components
> using Spring. My Spring xml looks like this:
>
> <camelContext id="camel" xmlns="http://camel.apache.org/schema/spring"; >
>
>       <route>
>                <from uri="direct://x"/>
>                <to uri="foo://x"/>
>     </route>
>
> </camelContext>
>
> where "foo" is referring to a custom component which is auto-registered
> using the META-INF/services... approach. The custom component is rather
> simple and basically just extends DefaultComponent by creating the correct
> type of endpoint.
>

You custom endpoint may not return the CamelContext instance when the
getCamelContext method is invoked on it.
So check your custom endpoint code.

Usually the constructor of the endpoint invokes super with the uri and
the component

    public CustomEndpoint(final String endpointUri, final Component component) {
        super(endpointUri, component);
    }



> When starting the context I get an exception [1] saying that the
> "camelContext
> must be specified". With a default component (say, "mock") things are
> working.
>
> What could I be missing?
>
> Thanks in advance for your help, and best regards,
> Bernd.
>
>
>
> [1] stack trace:
>
> org.apache.camel.RuntimeCamelException:
> org.apache.camel.FailedToCreateRouteException: Failed to create route route1
> at: >>> To[foo://x] <<< in route: Route[[From[direct://x]] -> [To[foo://x
> because of camelContext must be specified
>        at
> org.apache.camel.util.ObjectHelper.wrapRuntimeCamelException(ObjectHelper.java:1111)
>        at
> org.apache.camel.spring.SpringCamelContext.onApplicationEvent(SpringCamelContext.java:103)
>        at
> org.apache.camel.spring.CamelContextFactoryBean.onApplicationEvent(CamelContextFactoryBean.java:665)
>        at
> org.springframework.context.event.SimpleApplicationEventMulticaster$1.run(SimpleApplicationEventMulticaster.java:78)
>        at
> org.springframework.core.task.SyncTaskExecutor.execute(SyncTaskExecutor.java:49)
>        at
> org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:76)
>        at
> org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:274)
>        at
> org.springframework.context.support.AbstractApplicationContext.finishRefresh(AbstractApplicationContext.java:736)
>        at
> org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:383)
>        at
> org.springframework.context.support.FileSystemXmlApplicationContext.<init>(FileSystemXmlApplicationContext.java:140)
>        at
> org.springframework.context.support.FileSystemXmlApplicationContext.<init>(FileSystemXmlApplicationContext.java:84)
>        at
> wisnetgrid.adapter.connectors.unicore.TestSpringConfig.test1(TestSpringConfig.java:28)
>        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>        at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
>        at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:37)
>        at java.lang.reflect.Method.invoke(Method.java:599)
>        at junit.framework.TestCase.runTest(TestCase.java:154)
>        at junit.framework.TestCase.runBare(TestCase.java:127)
>        at junit.framework.TestResult$1.protect(TestResult.java:106)
>        at junit.framework.TestResult.runProtected(TestResult.java:124)
>        at junit.framework.TestResult.run(TestResult.java:109)
>        at junit.framework.TestCase.run(TestCase.java:118)
>        at junit.framework.TestSuite.runTest(TestSuite.java:208)
>        at junit.framework.TestSuite.run(TestSuite.java:203)
>        at
> org.eclipse.jdt.internal.junit.runner.junit3.JUnit3TestReference.run(JUnit3TestReference.java:130)
>        at
> org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
>        at
> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:460)
>        at
> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:673)
>        at
> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:386)
>        at
> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:196)
> Caused by: org.apache.camel.FailedToCreateRouteException: Failed to create
> route route1 at: >>> To[foo://x] <<< in route: Route[[From[direct://x]] ->
> [To[foo://x because of camelContext must be specified
>        at
> org.apache.camel.model.RouteDefinition.addRoutes(RouteDefinition.java:720)
>        at
> org.apache.camel.model.RouteDefinition.addRoutes(RouteDefinition.java:138)
>        at
> org.apache.camel.impl.DefaultCamelContext.startRoute(DefaultCamelContext.java:545)
>        at
> org.apache.camel.impl.DefaultCamelContext.startRouteDefinitions(DefaultCamelContext.java:1209)
>        at
> org.apache.camel.impl.DefaultCamelContext.doStartCamel(DefaultCamelContext.java:1107)
>        at
> org.apache.camel.impl.DefaultCamelContext.doStart(DefaultCamelContext.java:1037)
>        at
> org.apache.camel.spring.SpringCamelContext.doStart(SpringCamelContext.java:164)
>        at
> org.apache.camel.impl.ServiceSupport.start(ServiceSupport.java:56)
>        at
> org.apache.camel.impl.DefaultCamelContext.start(DefaultCamelContext.java:912)
>        at
> org.apache.camel.spring.SpringCamelContext.maybeStart(SpringCamelContext.java:203)
>        at
> org.apache.camel.spring.SpringCamelContext.onApplicationEvent(SpringCamelContext.java:101)
>        ... 28 more
> Caused by: java.lang.IllegalArgumentException: camelContext must be
> specified
>        at org.apache.camel.util.ObjectHelper.notNull(ObjectHelper.java:260)
>        at
> org.apache.camel.processor.SendProcessor.<init>(SendProcessor.java:51)
>        at
> org.apache.camel.processor.SendProcessor.<init>(SendProcessor.java:55)
>        at
> org.apache.camel.model.SendDefinition.createProcessor(SendDefinition.java:58)
>        at
> org.apache.camel.model.ToDefinition.createProcessor(ToDefinition.java:91)
>        at
> org.apache.camel.model.ProcessorDefinition.makeProcessor(ProcessorDefinition.java:365)
>        at
> org.apache.camel.model.ProcessorDefinition.addRoutes(ProcessorDefinition.java:161)
>        at
> org.apache.camel.model.RouteDefinition.addRoutes(RouteDefinition.java:717)
>        ... 38 more
>
> --
> View this message in context: 
> http://camel.465427.n5.nabble.com/Spring-route-config-involving-custom-components-tp510448p510448.html
> Sent from the Camel - Users mailing list archive at Nabble.com.
>



-- 
Claus Ibsen
Apache Camel Committer

Author of Camel in Action: http://www.manning.com/ibsen/
Open Source Integration: http://fusesource.com
Blog: http://davsclaus.blogspot.com/
Twitter: http://twitter.com/davsclaus

Reply via email to