[
https://issues.apache.org/activemq/browse/CAMEL-1055?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=47134#action_47134
]
Claus Ibsen commented on CAMEL-1055:
------------------------------------
I think the error is caught and handled by Spring and report as Spring does it
by standard.
Do you have any suggestions for a more concise exception?
> 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.