You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@camel.apache.org by grailcattt <pa...@yahoo.com> on 2009/06/08 18:39:39 UTC
ProducerTemplate inject into RouteBuilder Problem
I cannot inject a ProducerTemplate into a RouteBuilder. I know I can look it
up from the context, but thought it would be cleaner to inject. I am able to
inject into a class that is not a RouteBuilder.
Configuration:
<!-- Camel context - scans for RouteBuilders -->
<camel:camelContext id="camel">
<camel:package>com.recondotech.service</camel:package>
<!-- Enable JMX connector so we can connect to the server and browse
mbeans -->
<camel:jmxAgent id="agent" createConnector="true"
registryPort="1099" serviceUrlPath="/${service.deployable.name}" />
<camel:template id="camelTemplate"/>
</camel:camelContext>
<bean id="benefitRequester"
class="com.recondotech.service.eligibility.BenefitRequester">
<property name="camelTemplate" ref="camelTemplate"/>
<property name="prsManager" ref="prsManager"/>
</bean>
BenefitRequester is a RouteBuilder
Exception:
2009-06-08 10:25:24,568 ERROR org.apache.camel.spring.Main.main()
org.apache.camel.util.MainSupport - Failed:
org.springframework.beans.factory.BeanCreationException: Error creating bean
with name 'camel:beanPostProcessor': Cannot resolve reference to bean
'camel' while setting bean property 'camelContext'; nested exception is
org.springframework.beans.factory.BeanCreationException: Error creating bean
with name 'camel': Invocation of init method failed; nested exception is
org.springframework.beans.factory.BeanCreationException: Error creating bean
with name 'com.recondotech.service.eligibility.Service#0' defined in class
path resource [BaseService-context.xml]: Cannot resolve reference to bean
'benefitRequester' while setting bean property 'benefitRequester'; nested
exception is org.springframework.beans.factory.BeanCreationException: Error
creating bean with name 'benefitRequester' defined in class path resource
[BaseService-context.xml]: Cannot resolve reference to bean 'camelTemplate'
while setting bean property 'camelTemplate'; nested exception is
org.springframework.beans.factory.BeanCreationException: Error creating bean
with name 'camelTemplate': Invocation of init method failed; nested
exception is java.lang.IllegalArgumentException: A CamelContext must be
injected!
org.springframework.beans.factory.BeanCreationException: Error creating bean
with name 'camel:beanPostProcessor': Cannot resolve reference to bean
'camel' while setting bean property 'camelContext'; nested exception is
org.springframework.beans.factory.BeanCreationException: Error creating bean
with name 'camel': Invocation of init method failed; nested exception is
org.springframework.beans.factory.BeanCreationException: Error creating bean
with name 'com.recondotech.service.eligibility.Service#0' defined in class
path resource [BaseService-context.xml]: Cannot resolve reference to bean
'benefitRequester' while setting bean property 'benefitRequester'; nested
exception is org.springframework.beans.factory.BeanCreationException: Error
creating bean with name 'benefitRequester' defined in class path resource
[BaseService-context.xml]: Cannot resolve reference to bean 'camelTemplate'
while setting bean property 'camelTemplate'; nested exception is
org.springframework.beans.factory.BeanCreationException: Error creating bean
with name 'camelTemplate': Invocation of init method failed; nested
exception is java.lang.IllegalArgumentException: A CamelContext must be
injected!
at
org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:275)
at
org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:104)
at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1245)
at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1010)
at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:472)
at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory$1.run(AbstractAutowireCapableBeanFactory.java:409)
at java.security.AccessController.doPrivileged(Native Method)
at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:380)
at
org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:264)
at
org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:221)
at
org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:261)
at
org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:185)
at
org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:164)
at
org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:881)
at
org.springframework.context.support.AbstractApplicationContext.registerBeanPostProcessors(AbstractApplicationContext.java:606)
at
org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:366)
at
org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:139)
at
org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:93)
at
org.apache.camel.spring.Main.createDefaultApplicationContext(Main.java:189)
at org.apache.camel.spring.Main.doStart(Main.java:152)
at org.apache.camel.impl.ServiceSupport.start(ServiceSupport.java:47)
at org.apache.camel.util.MainSupport.run(MainSupport.java:121)
at org.apache.camel.util.MainSupport.run(MainSupport.java:310)
at org.apache.camel.spring.Main.main(Main.java:72)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at org.codehaus.mojo.exec.ExecJavaMojo$1.run(ExecJavaMojo.java:283)
at java.lang.Thread.run(Thread.java:595)
Caused by: org.springframework.beans.factory.BeanCreationException: Error
creating bean with name 'camel': Invocation of init method failed; nested
exception is org.springframework.beans.factory.BeanCreationException: Error
creating bean with name 'com.recondotech.service.eligibility.Service#0'
defined in class path resource [BaseService-context.xml]: Cannot resolve
reference to bean 'benefitRequester' while setting bean property
'benefitRequester'; nested exception is
org.springframework.beans.factory.BeanCreationException: Error creating bean
with name 'benefitRequester' defined in class path resource
[BaseService-context.xml]: Cannot resolve reference to bean 'camelTemplate'
while setting bean property 'camelTemplate'; nested exception is
org.springframework.beans.factory.BeanCreationException: Error creating bean
with name 'camelTemplate': Invocation of init method failed; nested
exception is java.lang.IllegalArgumentException: A CamelContext must be
injected!
at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1337)
at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:473)
at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory$1.run(AbstractAutowireCapableBeanFactory.java:409)
--
View this message in context: http://www.nabble.com/ProducerTemplate-inject-into-RouteBuilder-Problem-tp23927687p23927687.html
Sent from the Camel - Users mailing list archive at Nabble.com.
Re: ProducerTemplate inject into RouteBuilder Problem
Posted by Claus Ibsen <cl...@gmail.com>.
On Mon, Jun 8, 2009 at 6:39 PM, grailcattt<pa...@yahoo.com> wrote:
>
> I cannot inject a ProducerTemplate into a RouteBuilder. I know I can look it
> up from the context, but thought it would be cleaner to inject. I am able to
> inject into a class that is not a RouteBuilder.
>
> Configuration:
>
> <!-- Camel context - scans for RouteBuilders -->
> <camel:camelContext id="camel">
> <camel:package>com.recondotech.service</camel:package>
> <!-- Enable JMX connector so we can connect to the server and browse
> mbeans -->
> <camel:jmxAgent id="agent" createConnector="true"
> registryPort="1099" serviceUrlPath="/${service.deployable.name}" />
> <camel:template id="camelTemplate"/>
> </camel:camelContext>
>
> <bean id="benefitRequester"
> class="com.recondotech.service.eligibility.BenefitRequester">
> <property name="camelTemplate" ref="camelTemplate"/>
> <property name="prsManager" ref="prsManager"/>
> </bean>
>
> BenefitRequester is a RouteBuilder
Hi
Welcome on board the Camel ride.
You have hit a bug in Camel 1.6.1 or older. Injecting to a camel route
builder does not work.
We have fixed this in the next release 1.6.2 or 2.0.
The bug was reported at
http://issues.apache.org/activemq/browse/CAMEL-1674
But since your class is a RouteBuilder you can get the camel template
from this builder directly.
It has a getContext() where you can invoke the
createNewProducerTemplate() method to get the template.
>
> Exception:
>
> 2009-06-08 10:25:24,568 ERROR org.apache.camel.spring.Main.main()
> org.apache.camel.util.MainSupport - Failed:
> org.springframework.beans.factory.BeanCreationException: Error creating bean
> with name 'camel:beanPostProcessor': Cannot resolve reference to bean
> 'camel' while setting bean property 'camelContext'; nested exception is
> org.springframework.beans.factory.BeanCreationException: Error creating bean
> with name 'camel': Invocation of init method failed; nested exception is
> org.springframework.beans.factory.BeanCreationException: Error creating bean
> with name 'com.recondotech.service.eligibility.Service#0' defined in class
> path resource [BaseService-context.xml]: Cannot resolve reference to bean
> 'benefitRequester' while setting bean property 'benefitRequester'; nested
> exception is org.springframework.beans.factory.BeanCreationException: Error
> creating bean with name 'benefitRequester' defined in class path resource
> [BaseService-context.xml]: Cannot resolve reference to bean 'camelTemplate'
> while setting bean property 'camelTemplate'; nested exception is
> org.springframework.beans.factory.BeanCreationException: Error creating bean
> with name 'camelTemplate': Invocation of init method failed; nested
> exception is java.lang.IllegalArgumentException: A CamelContext must be
> injected!
> org.springframework.beans.factory.BeanCreationException: Error creating bean
> with name 'camel:beanPostProcessor': Cannot resolve reference to bean
> 'camel' while setting bean property 'camelContext'; nested exception is
> org.springframework.beans.factory.BeanCreationException: Error creating bean
> with name 'camel': Invocation of init method failed; nested exception is
> org.springframework.beans.factory.BeanCreationException: Error creating bean
> with name 'com.recondotech.service.eligibility.Service#0' defined in class
> path resource [BaseService-context.xml]: Cannot resolve reference to bean
> 'benefitRequester' while setting bean property 'benefitRequester'; nested
> exception is org.springframework.beans.factory.BeanCreationException: Error
> creating bean with name 'benefitRequester' defined in class path resource
> [BaseService-context.xml]: Cannot resolve reference to bean 'camelTemplate'
> while setting bean property 'camelTemplate'; nested exception is
> org.springframework.beans.factory.BeanCreationException: Error creating bean
> with name 'camelTemplate': Invocation of init method failed; nested
> exception is java.lang.IllegalArgumentException: A CamelContext must be
> injected!
> at
> org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:275)
> at
> org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:104)
> at
> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1245)
> at
> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1010)
> at
> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:472)
> at
> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory$1.run(AbstractAutowireCapableBeanFactory.java:409)
> at java.security.AccessController.doPrivileged(Native Method)
> at
> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:380)
> at
> org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:264)
> at
> org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:221)
> at
> org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:261)
> at
> org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:185)
> at
> org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:164)
> at
> org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:881)
> at
> org.springframework.context.support.AbstractApplicationContext.registerBeanPostProcessors(AbstractApplicationContext.java:606)
> at
> org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:366)
> at
> org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:139)
> at
> org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:93)
> at
> org.apache.camel.spring.Main.createDefaultApplicationContext(Main.java:189)
> at org.apache.camel.spring.Main.doStart(Main.java:152)
> at org.apache.camel.impl.ServiceSupport.start(ServiceSupport.java:47)
> at org.apache.camel.util.MainSupport.run(MainSupport.java:121)
> at org.apache.camel.util.MainSupport.run(MainSupport.java:310)
> at org.apache.camel.spring.Main.main(Main.java:72)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
> at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> at java.lang.reflect.Method.invoke(Method.java:585)
> at org.codehaus.mojo.exec.ExecJavaMojo$1.run(ExecJavaMojo.java:283)
> at java.lang.Thread.run(Thread.java:595)
> Caused by: org.springframework.beans.factory.BeanCreationException: Error
> creating bean with name 'camel': Invocation of init method failed; nested
> exception is org.springframework.beans.factory.BeanCreationException: Error
> creating bean with name 'com.recondotech.service.eligibility.Service#0'
> defined in class path resource [BaseService-context.xml]: Cannot resolve
> reference to bean 'benefitRequester' while setting bean property
> 'benefitRequester'; nested exception is
> org.springframework.beans.factory.BeanCreationException: Error creating bean
> with name 'benefitRequester' defined in class path resource
> [BaseService-context.xml]: Cannot resolve reference to bean 'camelTemplate'
> while setting bean property 'camelTemplate'; nested exception is
> org.springframework.beans.factory.BeanCreationException: Error creating bean
> with name 'camelTemplate': Invocation of init method failed; nested
> exception is java.lang.IllegalArgumentException: A CamelContext must be
> injected!
> at
> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1337)
> at
> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:473)
> at
> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory$1.run(AbstractAutowireCapableBeanFactory.java:409)
> --
> View this message in context: http://www.nabble.com/ProducerTemplate-inject-into-RouteBuilder-Problem-tp23927687p23927687.html
> Sent from the Camel - Users mailing list archive at Nabble.com.
>
>
--
Claus Ibsen
Apache Camel Committer
Open Source Integration: http://fusesource.com
Blog: http://davsclaus.blogspot.com/
Twitter: http://twitter.com/davsclaus