On Mon, Jun 8, 2009 at 6:39 PM, grailcattt<[email protected]> 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
