[
https://issues.apache.org/activemq/browse/SMX4-248?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Guillaume Nodet closed SMX4-248.
--------------------------------
Resolution: Working as Designed
> Class of an osgi:service defined in a spring config file cannot be
> instantiated by Spring CGLIB classes
> -------------------------------------------------------------------------------------------------------
>
> Key: SMX4-248
> URL: https://issues.apache.org/activemq/browse/SMX4-248
> Project: ServiceMix 4
> Issue Type: Bug
> Reporter: Charles Moulliard
>
> This error is generated :
> s...@root:/> Exception in thread "SpringOsgiExtenderThread-14"
> org.springframework.beans.factory.BeanCreationException: Error creating bean
> with name '
> activemq': FactoryBean threw exception on object creation; nested exception
> is java.lang.NoClassDefFoundError: org/springframework/core/task/TaskExecu
> tor
> 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:91)
> at
> org.springframework.beans.factory.support.AbstractBeanFactory.getObjectForBeanInstance(AbstractBeanFactory.java:1288)
> 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.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:425)
> at
> org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:728)
> at
> org.springframework.osgi.context.support.AbstractDelegatedExecutionApplicationContext.access$1600(AbstractDelegatedExecutionApplicationCont
> ext.java:68)
> at
> org.springframework.osgi.context.support.AbstractDelegatedExecutionApplicationContext$4.run(AbstractDelegatedExecutionApplicationContext.ja
> va:343)
> at
> org.springframework.osgi.util.internal.PrivilegedUtils.executeWithCustomTCCL(PrivilegedUtils.java:85)
> at
> org.springframework.osgi.context.support.AbstractDelegatedExecutionApplicationContext.completeRefresh(AbstractDelegatedExecutionApplication
> Context.java:308)
> at
> org.springframework.osgi.extender.internal.dependencies.startup.DependencyWaiterApplicationContextExecutor$CompleteRefreshTask.run(Dependen
> cyWaiterApplicationContextExecutor.java:138)
> at java.lang.Thread.run(Thread.java:595)
> Caused by: java.lang.NoClassDefFoundError:
> org/springframework/core/task/TaskExecutor
> at java.lang.Class.getDeclaredMethods0(Native Method)
> at java.lang.Class.privateGetDeclaredMethods(Class.java:2395)
> at java.lang.Class.getDeclaredMethod(Class.java:1907)
> at net.sf.cglib.proxy.Enhancer.getCallbacksSetter(Enhancer.java:627)
> at net.sf.cglib.proxy.Enhancer.setCallbacksHelper(Enhancer.java:615)
> at net.sf.cglib.proxy.Enhancer.setThreadCallbacks(Enhancer.java:609)
> at
> net.sf.cglib.proxy.Enhancer.createUsingReflection(Enhancer.java:631)
> at net.sf.cglib.proxy.Enhancer.firstInstance(Enhancer.java:538)
> at
> net.sf.cglib.core.AbstractClassGenerator.create(AbstractClassGenerator.java:225)
> at net.sf.cglib.proxy.Enhancer.createHelper(Enhancer.java:377)
> at net.sf.cglib.proxy.Enhancer.create(Enhancer.java:285)
> at
> org.springframework.aop.framework.Cglib2AopProxy.getProxy(Cglib2AopProxy.java:201)
> at
> org.springframework.aop.framework.ProxyFactory.getProxy(ProxyFactory.java:110)
> at
> org.springframework.osgi.service.util.internal.aop.ProxyUtils$1.run(ProxyUtils.java:65)
> at java.security.AccessController.doPrivileged(Native Method)
> at
> org.springframework.osgi.service.util.internal.aop.ProxyUtils.createProxy(ProxyUtils.java:62)
> at
> org.springframework.osgi.service.util.internal.aop.ProxyUtils.createProxy(ProxyUtils.java:39)
> at
> org.springframework.osgi.service.importer.support.AbstractServiceProxyCreator.createServiceProxy(AbstractServiceProxyCreator.java:107)
> at
> org.springframework.osgi.service.importer.support.OsgiServiceProxyFactoryBean.createProxy(OsgiServiceProxyFactoryBean.java:185)
> at
> org.springframework.osgi.service.importer.support.AbstractServiceImporterProxyFactoryBean.getObject(AbstractServiceImporterProxyFactoryBean
> .java:86)
> at
> org.springframework.osgi.service.importer.support.OsgiServiceProxyFactoryBean.getObject(OsgiServiceProxyFactoryBean.java:141)
> at
> org.springframework.beans.factory.support.FactoryBeanRegistrySupport$1.run(FactoryBeanRegistrySupport.java:121)
> ... 15 more
> When an interface is not declared (which is the case here because we would
> like to export the class :
> org.apache.activemq.camel.component.ActiveMQComponent), then Spring uses
> CGLIB. What we see here is that CGLIB does not find spring core classes
> (which are deployed as bundle in SMX4 - Spring )
> Here is the spring xml file
> <?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:osgi="http://www.springframework.org/schema/osgi"
> xsi:schemaLocation="http://www.springframework.org/schema/beans
> http://www.springframework.org/schema/beans/spring-beans.xsd
> http://www.springframework.org/schema/osgi
> http://www.springframework.org/schema/osgi/spring-osgi.xsd
> http://camel.apache.org/schema/spring
> http://camel.apache.org/schema/spring/camel-spring.xsd">
>
> <bean id="activemq"
> class="org.apache.activemq.camel.component.ActiveMQComponent">
> <property name="brokerURL"
> value="tcp://localhost:61616" />
> </bean>
>
> <osgi:service id="activemqservice" ref="activemq"
> auto-export="all-classes"/>
>
> </beans>
> and spring osgi bundles
> s...@root:osgi> list |grep Spring
> ID State Spring Level Name
> [ 21] [Active ] [ ] [ 30] Spring Context (2.5.6)
> [ 25] [Active ] [ ] [ 30] Spring Core (2.5.6)
> [ 30] [Active ] [ ] [ 30] Spring Beans (2.5.6)
> [ 38] [Active ] [ ] [ 30] Spring AOP (2.5.6)
> [ 39] [Active ] [Started] [ 30] Apache ServiceMix Kernel :: Spring
> Deployer (1.1.0.SNAPSHOT)
> [ 48] [Active ] [ ] [ 60] Spring Transaction (2.5.6)
> [ 52] [Active ] [ ] [ 60] Spring JMS (2.5.6)
> s...@root:osgi> list |grep spring
> [ 16] [Active ] [ ] [ 30] spring-osgi-io (1.2.0.m2)
> [ 34] [Active ] [ ] [ 30] spring-osgi-extender (1.2.0.m2)
> [ 41] [Active ] [ ] [ 30] spring-osgi-core (1.2.0.m2)
> [ 49] [Active ] [ ] [ 60] camel-spring (2.0.0.SNAPSHOT)
> [ 91] [Active ] [ ] [ 60] xbean-spring (3.4.3)
> [ 108] [Active ] [ ] [ 60] Apache ServiceMix Bundles: cglib-2.1.3
> (2.1.3)
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.