Error message when incorrectly starting Camel is misleading
-----------------------------------------------------------
Key: CAMEL-1055
URL: https://issues.apache.org/activemq/browse/CAMEL-1055
Project: Apache Camel
Issue Type: Improvement
Affects Versions: 1.5.0
Reporter: Noah Nordrum
Priority: Minor
Yes, I know you should just do things correctly, but sometimes we don't. When
the CamelContext is created/retrieved as follows, the error message is somewhat
misleading as to the actual problem. The root exception does state "No
applicationContext has been injected!", but the bulk of the other exceptions
are referring to the "beanPostProcessor".
If we could somehow throw a more concise exception, that would be great.
#
import org.springframework.core.io.Resource;
#
import org.springframework.core.io.ClassPathResource;
#
import org.springframework.beans.factory.BeanFactory;
#
import org.springframework.beans.factory.xml.XmlBeanFactory;
#
import org.apache.camel.CamelContext;
#
#
public class JamesTest {
#
#
public static void main(String[] args) {
#
Resource res = new ClassPathResource("/james.xml");
#
BeanFactory factory = new XmlBeanFactory(res);
#
#
final CamelContext cc = (CamelContext) factory.getBean("camelContext");
#
#
}
#
}
#
#
#
#
james.xml
#
<?xml version="1.0" encoding="UTF-8"?>
#
<beans xmlns="http://www.springframework.org/schema/beans"
#
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
#
xmlns:context="http://www.springframework.org/schema/context"
#
xmlns:camel="http://activemq.apache.org/camel/schema/spring"
#
xsi:schemaLocation="
#
http://www.springframework.org/schema/beans
#
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
#
http://www.springframework.org/schema/context
#
http://www.springframework.org/schema/context/spring-context-2.5.xsd
#
http://activemq.apache.org/camel/schema/spring
#
http://activemq.apache.org/camel/schema/spring/camel-spring.xsd">
#
#
<camel:camelContext id="camelContext">
#
</camel:camelContext>
#
#
</beans>
#
#
#
stack
#
INFO - XmlBeanDefinitionReader - Loading XML bean definitions from class
path resource [james.xml]
#
Exception in thread "main"
org.springframework.beans.factory.BeanCreationException: Error creating bean
with name 'camelContext': Cannot resolve reference to bean
'camelContext:beanPostProcessor' while setting bean property
'beanPostProcessor'; nested exception is
org.springframework.beans.factory.BeanCreationException: Error creating bean
with name 'camelContext:beanPostProcessor': Cannot resolve reference to bean
'camelContext' while setting bean property 'camelContext'; nested exception is
org.springframework.beans.factory.BeanCreationException: Error creating bean
with name 'camelContext': FactoryBean threw exception on object creation;
nested exception is java.lang.IllegalArgumentException: No applicationContext
has been 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 JamesTest.main(JamesTest.java:13)
#
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 com.intellij.rt.execution.application.AppMain.main(AppMain.java:90)
#
Caused by: org.springframework.beans.factory.BeanCreationException: Error
creating bean with name 'camelContext:beanPostProcessor': Cannot resolve
reference to bean 'camelContext' while setting bean property 'camelContext';
nested exception is org.springframework.beans.factory.BeanCreationException:
Error creating bean with name 'camelContext': FactoryBean threw exception on
object creation; nested exception is java.lang.IllegalArgumentException: No
applicationContext has been 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.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:269)
#
... 18 more
#
Caused by: org.springframework.beans.factory.BeanCreationException: Error
creating bean with name 'camelContext': FactoryBean threw exception on object
creation; nested exception is java.lang.IllegalArgumentException: No
applicationContext has been injected!
#
at
org.springframework.beans.factory.support.FactoryBeanRegistrySupport$1.run(FactoryBeanRegistrySupport.java:127)
#
at java.security.AccessController.doPrivileged(Native Method)
#
at
org.springframework.beans.factory.support.FactoryBeanRegistrySupport.doGetObjectFromFactoryBean(FactoryBeanRegistrySupport.java:116)
#
at
org.springframework.beans.factory.support.FactoryBeanRegistrySupport.getObjectFromFactoryBean(FactoryBeanRegistrySupport.java:98)
#
at
org.springframework.beans.factory.support.AbstractBeanFactory.getObjectForBeanInstance(AbstractBeanFactory.java:1285)
#
at
org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:217)
#
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.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:269)
#
... 31 more
#
Caused by: java.lang.IllegalArgumentException: No applicationContext has been
injected!
#
at
org.apache.camel.spring.CamelContextFactoryBean.getApplicationContext(CamelContextFactoryBean.java:354)
#
at
org.apache.camel.spring.CamelContextFactoryBean.createContext(CamelContextFactoryBean.java:473)
#
at
org.apache.camel.spring.CamelContextFactoryBean.getContext(CamelContextFactoryBean.java:305)
#
at
org.apache.camel.spring.CamelContextFactoryBean.getObject(CamelContextFactoryBean.java:130)
#
at
org.springframework.beans.factory.support.FactoryBeanRegistrySupport$1.run(FactoryBeanRegistrySupport.java:121)
#
... 39 more
#
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.