Hi,
I am trying out the latest Camel K release 2.1.0. And tried to use a camel
route of format XML with a Spring bean:
<camel>
<beans xmlns="http://www.springframework.org/schema/beans">
<bean id="mybean" class="java.lang.String">
<constructor-arg index="0" value=" Hello from Bean"/>
</bean>
</beans>
<route>
<from uri="direct:hello"/>
<transform>
<constant>Hello World</constant>
</transform>
<bean ref="mybean" method="concat" />
</route>
</camel>
On the integration pod I got the error:
←[39m←[38;5;145m2023-10-30 06:08:17,990←[39m←[38;5;188m
←[39m←[38;5;203mERROR←[39m←[38;5;188m
[←[39m←[38;5;69mio.qua.run.Application←[39m←[38;5;188m]
(←[39m←[38;5;71mmain←[39m←[38;5;188m) ←[39m←[38
;5;151mFailed to start application (with profile [prod])←[39m←[38;5;203m:
java.lang.RuntimeException: Failed to start quarkus
at io.quarkus.runner.ApplicationImpl.doStart(Unknown Source)
at io.quarkus.runtime.Application.start(Application.java:101)
at
io.quarkus.runtime.ApplicationLifecycleManager.run(ApplicationLifecycleManager.java:111)
at io.quarkus.runtime.Quarkus.run(Quarkus.java:71)
at io.quarkus.runtime.Quarkus.run(Quarkus.java:44)
at io.quarkus.runtime.Quarkus.run(Quarkus.java:124)
at io.quarkus.runner.GeneratedMain.main(Unknown Source)
at
java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
at
java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:568)
at
io.quarkus.bootstrap.runner.QuarkusEntryPoint.doRun(QuarkusEntryPoint.java:61)
at
io.quarkus.bootstrap.runner.QuarkusEntryPoint.main(QuarkusEntryPoint.java:32)
Caused by: java.lang.RuntimeException: java.lang.RuntimeException:
org.apache.camel.FailedToCreateRouteException: Failed to create route route1
at: >>> Bean[ref:mybean method:concat] <<< in route:
Route(route1)[From[direct:hello] -> [Transform[constant{Hell... because of No
bean could be found in the registry for: mybean
at
org.apache.camel.quarkus.core.CamelBootstrapRecorder.start(CamelBootstrapRecorder.java:47)
at
io.quarkus.deployment.steps.CamelBootstrapProcessor$boot173480958.deploy_0(Unknown
Source)
at
io.quarkus.deployment.steps.CamelBootstrapProcessor$boot173480958.deploy(Unknown
Source)
... 13 more
Caused by: java.lang.RuntimeException:
org.apache.camel.FailedToCreateRouteException: Failed to create route route1
at: >>> Bean[ref:mybean method:concat] <<< in route:
Route(route1)[From[direct:he
llo] -> [Transform[constant{Hell... because of No bean could be found in the
registry for: mybean
at
org.apache.camel.quarkus.main.CamelMainRuntime.start(CamelMainRuntime.java:65)
at
org.apache.camel.quarkus.core.CamelBootstrapRecorder.start(CamelBootstrapRecorder.java:45)
... 15 more
Caused by: org.apache.camel.FailedToCreateRouteException: Failed to create
route route1 at: >>> Bean[ref:mybean method:concat] <<< in route:
Route(route1)[From[direct:hello] -> [Transform[constant{
Hell... because of No bean could be found in the registry for: mybean
at
org.apache.camel.reifier.RouteReifier.doCreateRoute(RouteReifier.java:217)
at
org.apache.camel.reifier.RouteReifier.createRoute(RouteReifier.java:76)
at
org.apache.camel.impl.DefaultModelReifierFactory.createRoute(DefaultModelReifierFactory.java:49)
at
org.apache.camel.impl.DefaultCamelContext.startRouteDefinitions(DefaultCamelContext.java:816)
at
org.apache.camel.impl.DefaultCamelContext.startRouteDefinitions(DefaultCamelContext.java:685)
at
org.apache.camel.impl.engine.AbstractCamelContext.doInit(AbstractCamelContext.java:2396)
at
org.apache.camel.quarkus.core.FastCamelContext.doInit(FastCamelContext.java:171)
at
org.apache.camel.support.service.BaseService.init(BaseService.java:78)
at
org.apache.camel.impl.engine.AbstractCamelContext.init(AbstractCamelContext.java:2062)
at
org.apache.camel.support.service.BaseService.start(BaseService.java:105)
at
org.apache.camel.impl.engine.AbstractCamelContext.start(AbstractCamelContext.java:2081)
at
org.apache.camel.impl.DefaultCamelContext.start(DefaultCamelContext.java:313)
at org.apache.camel.quarkus.main.CamelMain.doStart(CamelMain.java:94)
at
org.apache.camel.support.service.BaseService.start(BaseService.java:113)
at
org.apache.camel.quarkus.main.CamelMain.startEngine(CamelMain.java:140)
at
org.apache.camel.quarkus.main.CamelMainRuntime.start(CamelMainRuntime.java:49)
... 16 more
Caused by: org.apache.camel.NoSuchBeanException: No bean could be found in the
registry for: mybean
at
org.apache.camel.component.bean.RegistryBean.doGetBean(RegistryBean.java:134)
at
org.apache.camel.component.bean.RegistryBean.getBean(RegistryBean.java:102)
at
org.apache.camel.component.bean.RegistryBean.createCacheHolder(RegistryBean.java:95)
at
org.apache.camel.component.bean.DefaultBeanProcessorFactory.createBeanProcessor(DefaultBeanProcessorFactory.java:80)
at
org.apache.camel.reifier.BeanReifier.createProcessor(BeanReifier.java:49)
at
org.apache.camel.reifier.ProcessorReifier.makeProcessor(ProcessorReifier.java:853)
at
org.apache.camel.reifier.ProcessorReifier.addRoutes(ProcessorReifier.java:593)
at
org.apache.camel.reifier.RouteReifier.doCreateRoute(RouteReifier.java:213)
... 31 more
I thought I can use Spring beans because Camel K 2.1 is based on Camel 4.0.0
which allows the embedding of Spring Beans; see
https://camel.apache.org/components/4.0.x/others/java-xml-io-dsl.html
Do I have to add some dependencies to make this work?
I also tried Camel XML bean:
<camel>
<bean name="mybean" type="java.lang.String">
</bean>
<route>
<from uri="direct:hello"/>
<transform>
<constant>Hello World</constant>
</transform>
<bean ref="mybean" method="concat" />
</route>
</camel>
Again I got the same error.
Regards
Franz