camel-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Claus Ibsen (JIRA)" <j...@apache.org>
Subject [jira] Commented: (CAMEL-494) CamelBeanPostProcessor.camelContext cannot be injected if SpringCamelContext is proxied (e.g. AOP)
Date Tue, 10 Jun 2008 04:21:00 GMT

    [ https://issues.apache.org/activemq/browse/CAMEL-494?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=43360#action_43360
] 

Claus Ibsen commented on CAMEL-494:
-----------------------------------

Dean I have tried a single file and can not reproduce the bug.

However I noticed this answer that has been there all the time
{code}
ClassPathXmlApplicationContext INFO  Bean 'camel' is not eligible for getting processed by
all BeanPostProcessors (for example: not eligible for auto-proxying)
{code}

That means that the CamelBeanPostProcessor that is being created during post processing is
not auto proxied.
Dean do you see this INFO logging from Spring?

This is from the spring 2.5.3 source, in its AbstractApplicationContext
{code}
		public Object postProcessAfterInitialization(Object bean, String beanName) {
			if (!(bean instanceof BeanPostProcessor) &&
					this.beanFactory.getBeanPostProcessorCount() < this.beanPostProcessorTargetCount)
{
				if (logger.isInfoEnabled()) {
					logger.info("Bean '" + beanName + "' is not eligible for getting processed by all " +
							"BeanPostProcessors (for example: not eligible for auto-proxying)");
				}
			}
			return bean;
		}
{code}

But I am running the example with Spring 2.5.4. What version of Spring are you using?

> CamelBeanPostProcessor.camelContext cannot be injected if SpringCamelContext is proxied
(e.g. AOP)
> --------------------------------------------------------------------------------------------------
>
>                 Key: CAMEL-494
>                 URL: https://issues.apache.org/activemq/browse/CAMEL-494
>             Project: Apache Camel
>          Issue Type: Bug
>          Components: camel-spring
>    Affects Versions: 1.3.0
>            Reporter: Dean Thompson
>            Assignee: Claus Ibsen
>             Fix For: 1.4.0
>
>         Attachments: iris-framework.xml
>
>
> Because CamelBeanPostProcessor.setCamelContext(SpringCamelContext) takes the class SpringCamelContext
as its parameter, bean initialization fails if SpringCamelContext is proxied.  The error is
as follows:
> {code}
> org.springframework.beans.factory.BeanCreationException: Error creating bean with name
'camelContext:beanPostProcessor': Initialization of bean failed; nested exception is org.springframework.beans.TypeMismatchException:
Failed to convert property value of type [$Proxy61] to required type [org.apache.camel.spring.SpringCamelContext]
for property 'camelContext'; nested exception is java.lang.IllegalArgumentException: Cannot
convert value of type [$Proxy61] to required type [org.apache.camel.spring.SpringCamelContext]
for property 'camelContext': no matching editors or conversion strategy found
> {code}
> In my project's Spring conf, we declare <aop:aspectj-autoproxy/>, which causes
all Spring beans to be proxied.  This triggers the problem shown above.  The problem should
be reproducible by adding <aop:aspectj-autoproxy/> to any Spring config that uses <camel:camelContext>.
> The fix will be to separate the interface and class for SpringCamelContext, and use the
interface where appropriate.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


Mime
View raw message