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