Using spring AOP + Weaving is certainly the most difficult thing to do on OSGI platform. Personally, I use OpenJPA (instead of Hibernate), Spring ORM and annotations or Spring Proxy Tx class to declare the transactions.
On Tue, May 10, 2011 at 1:08 PM, Bengt Rodehav <[email protected]> wrote: > Thanks for your reply Charles, > Yes, the direct cause is the exception you specify. However, everything > works fine if I include spring-orm as a private package. Thus, there is > nothing wrong with my spring context definition file per se. I'm sure the > problem has to do with classloading/bundle resolving stuff. > Perhaps it's because spring-aop is already installed? Maybe it's not enough > delaying the resolving of spring-orm, perhaps spring-aop must also resolve > after my classes are installed? > I'm using spring-aop to define transaction attributes for my spring beans. > /Bengt > > 2011/5/10 Charles Moulliard <[email protected]> >> >> Hi Bengt, >> >> Your problem is linked to this error (from your stacktrace) >> >> Caused by: java.lang.IllegalStateException: Expecting raw type, not: >> org.springframework.beans.factory.FactoryBean >> at >> org.aspectj.weaver.TypeFactory.createParameterizedType(TypeFactory.java:37)[47:com.springsource.org.aspectj.weaver:1.6.6.RELEASE] >> >> Regards, >> >> Charles Moulliard >> >> Sr. Principal Solution Architect - FuseSource >> Apache Committer >> >> Blog : http://cmoulliard.blogspot.com >> Twitter : http://twitter.com/cmoulliard >> Linkedin : http://www.linkedin.com/in/charlesmoulliard >> Skype: cmoulliard >> >> >> >> On Tue, May 10, 2011 at 12:16 PM, Bengt Rodehav <[email protected]> wrote: >> > Achim, >> > You're right that the problem concerns spring-orm. If I specify >> > org.springframework.orm* as a private package (so that it is included in >> > my >> > bundle) and I also specify the following dynamic imports: >> >> >> >> >> >> >> >> org.springframework.aop,org.springframework.aop.*,org.aopalliance.aop,org.hibernate.*,net.sf.cglib.* >> > >> > ...then it works. But I can't seem to find a way to use an already >> > installed >> > spring-orm bundle. So, it sounds like the problem you describe but in my >> > case spring-orm is not installed until I install it as part of my >> > feature, >> > as follows: >> >> >> >> ... >> >> <feature name="trs-persistence" version="${project.version}"> >> >> <feature version="${project.version}">trs-util</feature> >> >> >> >> <bundle>mvn:org.springframework/spring-aop/${spring-version}</bundle> >> >> >> >> <bundle>mvn:org.springframework/spring-jdbc/${spring-version}</bundle> >> >> >> >> <bundle>mvn:org.springframework/spring-orm/${spring-version}</bundle> >> >> >> >> >> >> <bundle>mvn:org.springframework/spring-transaction/${spring-version}</bundle> >> >> <bundle>mvn:joda-time/joda-time/${joda-time-version}</bundle> >> >> >> >> <bundle>mvn:se.digia.trs.persistence/tra/${project.version}</bundle> >> >> </feature> >> >> ... >> > >> > Wouldn't my bundle (the "tra" bundle) be visible when spring-orm >> > resolves? >> > How does this work? Can you explain? >> > From what I've understood, the bundles in startup.properties will see >> > each >> > other at resolve time but they will not see bundles loaded by Karaf >> > features >> > - right? But, what bundles will the features see when they resolve? Will >> > they see other bundles in the same feature? Bundles in other features? >> > Bundles in startup.properties? >> > This is pretty tricky - I think. Ideally, it shouldn't matter whether I >> > provision Karaf using startup.properties or via features - they should >> > all >> > resolve against each other. >> > BTW, the exception I now get is the following: >> >> >> >> 2011-05-10 12:01:01,826 | ERROR | ExtenderThread-2 | >> >> ContextLoaderListener >> >> | BundleApplicationContextListener 50 | Application >> >> context >> >> refresh failed (OsgiBundleXmlApplicationContext(bundle=tra, >> >> config=osgibundle:/META-INF/spring/*.xml)) >> >> org.springframework.beans.factory.BeanCreationException: Error creating >> >> bean with name >> >> >> >> 'org.springframework.osgi.service.exporter.support.OsgiServiceFactoryBean#0': >> >> Invocation of init method failed; nested exception is >> >> org.springframework.beans.factory.BeanCreationException: Error creating >> >> bean >> >> with name 'tra_traService' defined in URL >> >> [bundle://144.0:0/META-INF/spring/context.xml]: Cannot resolve >> >> reference to >> >> bean 'tra_transactionDAO' while setting bean property 'transactionDAO'; >> >> nested exception is >> >> org.springframework.beans.factory.BeanCreationException: >> >> Error creating bean with name 'tra_transactionDAO' defined in URL >> >> [bundle://144.0:0/META-INF/spring/context.xml]: Cannot resolve >> >> reference to >> >> bean 'tra_sessionFactory' while setting bean property 'sessionFactory'; >> >> nested exception is >> >> org.springframework.beans.factory.BeanCreationException: >> >> Error creating bean with name 'tra_sessionFactory' defined in URL >> >> [bundle://144.0:0/META-INF/spring/context.xml]: Initialization of bean >> >> failed; nested exception is java.lang.IllegalStateException: Expecting >> >> raw >> >> type, not: org.springframework.beans.factory.FactoryBean >> >> at >> >> >> >> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1420)[87:org.springframework.beans:3.0.5.RELEASE] >> >> at >> >> >> >> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:519)[87:org.springframework.beans:3.0.5.RELEASE] >> >> at >> >> >> >> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456)[87:org.springframework.beans:3.0.5.RELEASE] >> >> at >> >> >> >> org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:291)[87:org.springframework.beans:3.0.5.RELEASE] >> >> at >> >> >> >> org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)[87:org.springframework.beans:3.0.5.RELEASE] >> >> at >> >> >> >> org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:288)[87:org.springframework.beans:3.0.5.RELEASE] >> >> at >> >> >> >> org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:190)[87:org.springframework.beans:3.0.5.RELEASE] >> >> at >> >> >> >> org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:563)[87:org.springframework.beans:3.0.5.RELEASE] >> >> at >> >> >> >> org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:895)[89:org.springframework.context:3.0.5.RELEASE] >> >> at >> >> >> >> org.springframework.osgi.context.support.AbstractDelegatedExecutionApplicationContext.access$1600(AbstractDelegatedExecutionApplicationContext.java:69)[98:org.springframework.osgi.core:1.2.1] >> >> at >> >> >> >> org.springframework.osgi.context.support.AbstractDelegatedExecutionApplicationContext$4.run(AbstractDelegatedExecutionApplicationContext.java:355)[98:org.springframework.osgi.core:1.2.1] >> >> at >> >> >> >> org.springframework.osgi.util.internal.PrivilegedUtils.executeWithCustomTCCL(PrivilegedUtils.java:85)[98:org.springframework.osgi.core:1.2.1] >> >> at >> >> >> >> org.springframework.osgi.context.support.AbstractDelegatedExecutionApplicationContext.completeRefresh(AbstractDelegatedExecutionApplicationContext.java:320)[98:org.springframework.osgi.core:1.2.1] >> >> at >> >> >> >> org.springframework.osgi.extender.internal.dependencies.startup.DependencyWaiterApplicationContextExecutor$CompleteRefreshTask.run(DependencyWaiterApplicationContextExecutor.java:132)[99:org.springframework.osgi.extender:1.2.1] >> >> at java.lang.Thread.run(Thread.java:662)[:1.6.0_25] >> >> Caused by: org.springframework.beans.factory.BeanCreationException: >> >> Error >> >> creating bean with name 'tra_traService' defined in URL >> >> [bundle://144.0:0/META-INF/spring/context.xml]: Cannot resolve >> >> reference to >> >> bean 'tra_transactionDAO' while setting bean property 'transactionDAO'; >> >> nested exception is >> >> org.springframework.beans.factory.BeanCreationException: >> >> Error creating bean with name 'tra_transactionDAO' defined in URL >> >> [bundle://144.0:0/META-INF/spring/context.xml]: Cannot resolve >> >> reference to >> >> bean 'tra_sessionFactory' while setting bean property 'sessionFactory'; >> >> nested exception is >> >> org.springframework.beans.factory.BeanCreationException: >> >> Error creating bean with name 'tra_sessionFactory' defined in URL >> >> [bundle://144.0:0/META-INF/spring/context.xml]: Initialization of bean >> >> failed; nested exception is java.lang.IllegalStateException: Expecting >> >> raw >> >> type, not: org.springframework.beans.factory.FactoryBean >> >> at >> >> >> >> org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:328)[87:org.springframework.beans:3.0.5.RELEASE] >> >> at >> >> >> >> org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:106)[87:org.springframework.beans:3.0.5.RELEASE] >> >> at >> >> >> >> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1325)[87:org.springframework.beans:3.0.5.RELEASE] >> >> at >> >> >> >> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1086)[87:org.springframework.beans:3.0.5.RELEASE] >> >> at >> >> >> >> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:517)[87:org.springframework.beans:3.0.5.RELEASE] >> >> at >> >> >> >> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456)[87:org.springframework.beans:3.0.5.RELEASE] >> >> at >> >> >> >> org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:291)[87:org.springframework.beans:3.0.5.RELEASE] >> >> at >> >> >> >> org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)[87:org.springframework.beans:3.0.5.RELEASE] >> >> at >> >> >> >> org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:288)[87:org.springframework.beans:3.0.5.RELEASE] >> >> at >> >> >> >> org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:190)[87:org.springframework.beans:3.0.5.RELEASE] >> >> at >> >> >> >> org.springframework.osgi.service.exporter.support.OsgiServiceFactoryBean.afterPropertiesSet(OsgiServiceFactoryBean.java:167)[98:org.springframework.osgi.core:1.2.1] >> >> at >> >> >> >> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1477)[87:org.springframework.beans:3.0.5.RELEASE] >> >> at >> >> >> >> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1417)[87:org.springframework.beans:3.0.5.RELEASE] >> >> ... 14 more >> >> Caused by: org.springframework.beans.factory.BeanCreationException: >> >> Error >> >> creating bean with name 'tra_transactionDAO' defined in URL >> >> [bundle://144.0:0/META-INF/spring/context.xml]: Cannot resolve >> >> reference to >> >> bean 'tra_sessionFactory' while setting bean property 'sessionFactory'; >> >> nested exception is >> >> org.springframework.beans.factory.BeanCreationException: >> >> Error creating bean with name 'tra_sessionFactory' defined in URL >> >> [bundle://144.0:0/META-INF/spring/context.xml]: Initialization of bean >> >> failed; nested exception is java.lang.IllegalStateException: Expecting >> >> raw >> >> type, not: org.springframework.beans.factory.FactoryBean >> >> at >> >> >> >> org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:328)[87:org.springframework.beans:3.0.5.RELEASE] >> >> at >> >> >> >> org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:106)[87:org.springframework.beans:3.0.5.RELEASE] >> >> at >> >> >> >> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1325)[87:org.springframework.beans:3.0.5.RELEASE] >> >> at >> >> >> >> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1086)[87:org.springframework.beans:3.0.5.RELEASE] >> >> at >> >> >> >> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:517)[87:org.springframework.beans:3.0.5.RELEASE] >> >> at >> >> >> >> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456)[87:org.springframework.beans:3.0.5.RELEASE] >> >> at >> >> >> >> org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:291)[87:org.springframework.beans:3.0.5.RELEASE] >> >> at >> >> >> >> org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)[87:org.springframework.beans:3.0.5.RELEASE] >> >> at >> >> >> >> org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:288)[87:org.springframework.beans:3.0.5.RELEASE] >> >> at >> >> >> >> org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:190)[87:org.springframework.beans:3.0.5.RELEASE] >> >> at >> >> >> >> org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:322)[87:org.springframework.beans:3.0.5.RELEASE] >> >> ... 26 more >> >> Caused by: org.springframework.beans.factory.BeanCreationException: >> >> Error >> >> creating bean with name 'tra_sessionFactory' defined in URL >> >> [bundle://144.0:0/META-INF/spring/context.xml]: Initialization of bean >> >> failed; nested exception is java.lang.IllegalStateException: Expecting >> >> raw >> >> type, not: org.springframework.beans.factory.FactoryBean >> >> at >> >> >> >> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:527)[87:org.springframework.beans:3.0.5.RELEASE] >> >> at >> >> >> >> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456)[87:org.springframework.beans:3.0.5.RELEASE] >> >> at >> >> >> >> org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:291)[87:org.springframework.beans:3.0.5.RELEASE] >> >> at >> >> >> >> org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)[87:org.springframework.beans:3.0.5.RELEASE] >> >> at >> >> >> >> org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:288)[87:org.springframework.beans:3.0.5.RELEASE] >> >> at >> >> >> >> org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:190)[87:org.springframework.beans:3.0.5.RELEASE] >> >> at >> >> >> >> org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:322)[87:org.springframework.beans:3.0.5.RELEASE] >> >> ... 36 more >> >> Caused by: java.lang.IllegalStateException: Expecting raw type, not: >> >> org.springframework.beans.factory.FactoryBean >> >> at >> >> >> >> org.aspectj.weaver.TypeFactory.createParameterizedType(TypeFactory.java:37)[47:com.springsource.org.aspectj.weaver:1.6.6.RELEASE] >> >> at >> >> >> >> org.aspectj.weaver.reflect.JavaLangTypeToResolvedTypeConverter.fromType(JavaLangTypeToResolvedTypeConverter.java:75)[47:com.springsource.org.aspectj.weaver:1.6.6.RELEASE] >> >> at >> >> >> >> org.aspectj.weaver.reflect.JavaLangTypeToResolvedTypeConverter.fromTypes(JavaLangTypeToResolvedTypeConverter.java:123)[47:com.springsource.org.aspectj.weaver:1.6.6.RELEASE] >> >> at >> >> >> >> org.aspectj.weaver.reflect.Java15ReflectionBasedReferenceTypeDelegate.getDeclaredInterfaces(Java15ReflectionBasedReferenceTypeDelegate.java:126)[47:com.springsource.org.aspectj.weaver:1.6.6.RELEASE] >> >> at >> >> >> >> org.aspectj.weaver.ReferenceType.getDeclaredInterfaces(ReferenceType.java:594)[47:com.springsource.org.aspectj.weaver:1.6.6.RELEASE] >> >> at >> >> >> >> org.aspectj.weaver.ResolvedType.getDirectSupertypes(ResolvedType.java:66)[47:com.springsource.org.aspectj.weaver:1.6.6.RELEASE] >> >> at >> >> >> >> org.aspectj.weaver.JoinPointSignatureIterator.findSignaturesFromSupertypes(JoinPointSignatureIterator.java:183)[47:com.springsource.org.aspectj.weaver:1.6.6.RELEASE] >> >> at >> >> >> >> org.aspectj.weaver.JoinPointSignatureIterator.hasNext(JoinPointSignatureIterator.java:74)[47:com.springsource.org.aspectj.weaver:1.6.6.RELEASE] >> >> at >> >> >> >> org.aspectj.weaver.patterns.SignaturePattern.matches(SignaturePattern.java:291)[47:com.springsource.org.aspectj.weaver:1.6.6.RELEASE] >> >> at >> >> >> >> org.aspectj.weaver.patterns.KindedPointcut.matchInternal(KindedPointcut.java:106)[47:com.springsource.org.aspectj.weaver:1.6.6.RELEASE] >> >> at >> >> >> >> org.aspectj.weaver.patterns.Pointcut.match(Pointcut.java:146)[47:com.springsource.org.aspectj.weaver:1.6.6.RELEASE] >> >> at >> >> >> >> org.aspectj.weaver.internal.tools.PointcutExpressionImpl.getShadowMatch(PointcutExpressionImpl.java:235)[47:com.springsource.org.aspectj.weaver:1.6.6.RELEASE] >> >> at >> >> >> >> org.aspectj.weaver.internal.tools.PointcutExpressionImpl.matchesExecution(PointcutExpressionImpl.java:101)[47:com.springsource.org.aspectj.weaver:1.6.6.RELEASE] >> >> at >> >> >> >> org.aspectj.weaver.internal.tools.PointcutExpressionImpl.matchesMethodExecution(PointcutExpressionImpl.java:92)[47:com.springsource.org.aspectj.weaver:1.6.6.RELEASE] >> >> at >> >> >> >> org.springframework.aop.aspectj.AspectJExpressionPointcut.getShadowMatch(AspectJExpressionPointcut.java:361)[88:org.springframework.aop:3.0.5.RELEASE] >> >> at >> >> >> >> org.springframework.aop.aspectj.AspectJExpressionPointcut.matches(AspectJExpressionPointcut.java:249)[88:org.springframework.aop:3.0.5.RELEASE] >> >> at >> >> >> >> org.springframework.aop.support.AopUtils.canApply(AopUtils.java:216)[88:org.springframework.aop:3.0.5.RELEASE] >> >> at >> >> >> >> org.springframework.aop.support.AopUtils.canApply(AopUtils.java:254)[88:org.springframework.aop:3.0.5.RELEASE] >> >> at >> >> >> >> org.springframework.aop.support.AopUtils.findAdvisorsThatCanApply(AopUtils.java:286)[88:org.springframework.aop:3.0.5.RELEASE] >> >> at >> >> >> >> org.springframework.aop.framework.autoproxy.AbstractAdvisorAutoProxyCreator.findAdvisorsThatCanApply(AbstractAdvisorAutoProxyCreator.java:117)[88:org.springframework.aop:3.0.5.RELEASE] >> >> at >> >> >> >> org.springframework.aop.framework.autoproxy.AbstractAdvisorAutoProxyCreator.findEligibleAdvisors(AbstractAdvisorAutoProxyCreator.java:87)[88:org.springframework.aop:3.0.5.RELEASE] >> >> at >> >> >> >> org.springframework.aop.framework.autoproxy.AbstractAdvisorAutoProxyCreator.getAdvicesAndAdvisorsForBean(AbstractAdvisorAutoProxyCreator.java:68)[88:org.springframework.aop:3.0.5.RELEASE] >> >> at >> >> >> >> org.springframework.aop.framework.autoproxy.AbstractAutoProxyCreator.wrapIfNecessary(AbstractAutoProxyCreator.java:359)[88:org.springframework.aop:3.0.5.RELEASE] >> >> at >> >> >> >> org.springframework.aop.framework.autoproxy.AbstractAutoProxyCreator.postProcessAfterInitialization(AbstractAutoProxyCreator.java:322)[88:org.springframework.aop:3.0.5.RELEASE] >> >> at >> >> >> >> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyBeanPostProcessorsAfterInitialization(AbstractAutowireCapableBeanFactory.java:407)[87:org.springframework.beans:3.0.5.RELEASE] >> >> at >> >> >> >> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1426)[87:org.springframework.beans:3.0.5.RELEASE] >> >> at >> >> >> >> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:519)[87:org.springframework.beans:3.0.5.RELEASE] >> >> ... 42 more >> > >> > Not sure if it helps. I've tried various combinations of loading the >> > bundles >> > and I get a number of different exceptions. The only thing that seems to >> > work is to not use the already installed spring-orm. >> > /Bengt >> > >> > >> > 2011/5/9 Bengt Rodehav <[email protected]> >> >> >> >> Thanks a lot for your quick reply Achim. I do use the >> >> org.springframework.orm package via spring-hibernate3. However, >> >> currently >> >> those packages are included in my client bundle (as private packages). >> >> Maybe >> >> that's part of my problem. I'll try to do it your way and see if it >> >> helps. >> >> /Bengt >> >> >> >> 2011/5/9 Achim Nierbeck <[email protected]> >> >>> >> >>> Hi Bengt, >> >>> >> >>> from your Stacktrace I can guess you try to use Hibernate with Spring, >> >>> possibly also with spring-orm, right? >> >>> Well since Spring-ORM is probably already started it's not able to >> >>> "see" >> >>> the corresponding Hibernate packages >> >>> since those are imported optionally. To get those optionally packages >> >>> resolved you usually do a refresh on >> >>> the Spring-ORM bundle which is OK during development time but usually >> >>> not >> >>> in Production :-) >> >>> What I have done before to make sure that the Spring-ORM bundle is >> >>> actually importing the provided packages >> >>> from Hibernate, I did create a special Fragment bundle where I just >> >>> added >> >>> a manifest file >> >>> where the required Hibernate Packages where actually Imported without >> >>> the >> >>> optional description. >> >>> This makes sure Spring-ORM is only resolved/started when your >> >>> Hibernate >> >>> bundle is available. >> >>> >> >>> >> >>> Regards, Achim >> >>> >> >>> >> >>> >> >>> Am 09.05.2011 22:26, schrieb Bengt Rodehav: >> >>> >> >>> I'm trying to use Hibernate within Karaf. I've managed to get it to >> >>> work >> >>> if I deploy Hibernate and its dependencies by dropping the jar's in >> >>> the >> >>> deploy folder. However, I cannot get it to work using Karaf features >> >>> (which >> >>> I would like to). I get the following exception: >> >>>> >> >>>> 2011-05-09 22:23:23,069 | ERROR | ExtenderThread-2 | >> >>>> ContextLoaderListener | BundleApplicationContextListener >> >>>> 50 | >> >>>> Application context refresh failed >> >>>> (OsgiBundleXmlApplicationContext(bundle=tra, >> >>>> config=osgibundle:/META-INF/spring/*.xml)) >> >>>> org.springframework.beans.factory.BeanCreationException: Error >> >>>> creating >> >>>> bean with name >> >>>> >> >>>> 'org.springframework.osgi.service.exporter.support.OsgiServiceFactoryBean#0': >> >>>> Invocation of init method failed; nested exception is >> >>>> org.springframework.beans.factory.BeanCreationException: Error >> >>>> creating bean >> >>>> with name 'tra_traService' defined in URL >> >>>> [bundle://136.0:0/META-INF/spring/context.xml]: Cannot resolve >> >>>> reference to >> >>>> bean 'tra_transactionDAO' while setting bean property >> >>>> 'transactionDAO'; >> >>>> nested exception is >> >>>> org.springframework.beans.factory.BeanCreationException: >> >>>> Error creating bean with name 'tra_transactionDAO' defined in URL >> >>>> [bundle://136.0:0/META-INF/spring/context.xml]: Instantiation of bean >> >>>> failed; nested exception is java.lang.NoClassDefFoundError: >> >>>> org/hibernate/criterion/Criterion >> >>>> at >> >>>> >> >>>> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1420)[81:org.springframework.beans:3.0.5.RELEASE] >> >>>> at >> >>>> >> >>>> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:519)[81:org.springframework.beans:3.0.5.RELEASE] >> >>>> at >> >>>> >> >>>> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456)[81:org.springframework.beans:3.0.5.RELEASE] >> >>>> at >> >>>> >> >>>> org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:291)[81:org.springframework.beans:3.0.5.RELEASE] >> >>>> at >> >>>> >> >>>> org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)[81:org.springframework.beans:3.0.5.RELEASE] >> >>>> at >> >>>> >> >>>> org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:288)[81:org.springframework.beans:3.0.5.RELEASE] >> >>>> at >> >>>> >> >>>> org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:190)[81:org.springframework.beans:3.0.5.RELEASE] >> >>>> at >> >>>> >> >>>> org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:563)[81:org.springframework.beans:3.0.5.RELEASE] >> >>>> at >> >>>> >> >>>> org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:895)[83:org.springframework.context:3.0.5.RELEASE] >> >>>> at >> >>>> >> >>>> org.springframework.osgi.context.support.AbstractDelegatedExecutionApplicationContext.access$1600(AbstractDelegatedExecutionApplicationContext.java:69)[92:org.springframework.osgi.core:1.2.1] >> >>>> at >> >>>> >> >>>> org.springframework.osgi.context.support.AbstractDelegatedExecutionApplicationContext$4.run(AbstractDelegatedExecutionApplicationContext.java:355)[92:org.springframework.osgi.core:1.2.1] >> >>>> at >> >>>> >> >>>> org.springframework.osgi.util.internal.PrivilegedUtils.executeWithCustomTCCL(PrivilegedUtils.java:85)[92:org.springframework.osgi.core:1.2.1] >> >>>> at >> >>>> >> >>>> org.springframework.osgi.context.support.AbstractDelegatedExecutionApplicationContext.completeRefresh(AbstractDelegatedExecutionApplicationContext.java:320)[92:org.springframework.osgi.core:1.2.1] >> >>>> at >> >>>> >> >>>> org.springframework.osgi.extender.internal.dependencies.startup.DependencyWaiterApplicationContextExecutor$CompleteRefreshTask.run(DependencyWaiterApplicationContextExecutor.java:132)[93:org.springframework.osgi.extender:1.2.1] >> >>>> at java.lang.Thread.run(Thread.java:662)[:1.6.0_25] >> >>>> Caused by: org.springframework.beans.factory.BeanCreationException: >> >>>> Error creating bean with name 'tra_traService' defined in URL >> >>>> [bundle://136.0:0/META-INF/spring/context.xml]: Cannot resolve >> >>>> reference to >> >>>> bean 'tra_transactionDAO' while setting bean property >> >>>> 'transactionDAO'; >> >>>> nested exception is >> >>>> org.springframework.beans.factory.BeanCreationException: >> >>>> Error creating bean with name 'tra_transactionDAO' defined in URL >> >>>> [bundle://136.0:0/META-INF/spring/context.xml]: Instantiation of bean >> >>>> failed; nested exception is java.lang.NoClassDefFoundError: >> >>>> org/hibernate/criterion/Criterion >> >>>> at >> >>>> >> >>>> org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:328)[81:org.springframework.beans:3.0.5.RELEASE] >> >>>> at >> >>>> >> >>>> org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:106)[81:org.springframework.beans:3.0.5.RELEASE] >> >>>> at >> >>>> >> >>>> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1325)[81:org.springframework.beans:3.0.5.RELEASE] >> >>>> at >> >>>> >> >>>> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1086)[81:org.springframework.beans:3.0.5.RELEASE] >> >>>> at >> >>>> >> >>>> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:517)[81:org.springframework.beans:3.0.5.RELEASE] >> >>>> at >> >>>> >> >>>> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456)[81:org.springframework.beans:3.0.5.RELEASE] >> >>>> at >> >>>> >> >>>> org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:291)[81:org.springframework.beans:3.0.5.RELEASE] >> >>>> at >> >>>> >> >>>> org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)[81:org.springframework.beans:3.0.5.RELEASE] >> >>>> at >> >>>> >> >>>> org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:288)[81:org.springframework.beans:3.0.5.RELEASE] >> >>>> at >> >>>> >> >>>> org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:190)[81:org.springframework.beans:3.0.5.RELEASE] >> >>>> at >> >>>> >> >>>> org.springframework.osgi.service.exporter.support.OsgiServiceFactoryBean.afterPropertiesSet(OsgiServiceFactoryBean.java:167)[92:org.springframework.osgi.core:1.2.1] >> >>>> at >> >>>> >> >>>> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1477)[81:org.springframework.beans:3.0.5.RELEASE] >> >>>> at >> >>>> >> >>>> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1417)[81:org.springframework.beans:3.0.5.RELEASE] >> >>>> ... 14 more >> >>>> Caused by: org.springframework.beans.factory.BeanCreationException: >> >>>> Error creating bean with name 'tra_transactionDAO' defined in URL >> >>>> [bundle://136.0:0/META-INF/spring/context.xml]: Instantiation of bean >> >>>> failed; nested exception is java.lang.NoClassDefFoundError: >> >>>> org/hibernate/criterion/Criterion >> >>>> at >> >>>> >> >>>> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateBean(AbstractAutowireCapableBeanFactory.java:965)[81:org.springframework.beans:3.0.5.RELEASE] >> >>>> at >> >>>> >> >>>> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:911)[81:org.springframework.beans:3.0.5.RELEASE] >> >>>> at >> >>>> >> >>>> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:485)[81:org.springframework.beans:3.0.5.RELEASE] >> >>>> at >> >>>> >> >>>> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456)[81:org.springframework.beans:3.0.5.RELEASE] >> >>>> at >> >>>> >> >>>> org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:291)[81:org.springframework.beans:3.0.5.RELEASE] >> >>>> at >> >>>> >> >>>> org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)[81:org.springframework.beans:3.0.5.RELEASE] >> >>>> at >> >>>> >> >>>> org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:288)[81:org.springframework.beans:3.0.5.RELEASE] >> >>>> at >> >>>> >> >>>> org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:190)[81:org.springframework.beans:3.0.5.RELEASE] >> >>>> at >> >>>> >> >>>> org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:322)[81:org.springframework.beans:3.0.5.RELEASE] >> >>>> ... 26 more >> >>>> Caused by: java.lang.NoClassDefFoundError: >> >>>> org/hibernate/criterion/Criterion >> >>>> at java.lang.Class.getDeclaredConstructors0(Native Method)[:1.6.0_25] >> >>>> at >> >>>> >> >>>> java.lang.Class.privateGetDeclaredConstructors(Class.java:2389)[:1.6.0_25] >> >>>> at java.lang.Class.getConstructor0(Class.java:2699)[:1.6.0_25] >> >>>> at java.lang.Class.getDeclaredConstructor(Class.java:1985)[:1.6.0_25] >> >>>> at >> >>>> >> >>>> org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:65) >> >>>> at >> >>>> >> >>>> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateBean(AbstractAutowireCapableBeanFactory.java:958)[81:org.springframework.beans:3.0.5.RELEASE] >> >>>> ... 34 more >> >>>> Caused by: java.lang.ClassNotFoundException: >> >>>> org.hibernate.criterion.Criterion not found by tra [136] >> >>>> at >> >>>> >> >>>> org.apache.felix.framework.ModuleImpl.findClassOrResourceByDelegation(ModuleImpl.java:787) >> >>>> at >> >>>> org.apache.felix.framework.ModuleImpl.access$400(ModuleImpl.java:71) >> >>>> at >> >>>> >> >>>> org.apache.felix.framework.ModuleImpl$ModuleClassLoader.loadClass(ModuleImpl.java:1768) >> >>>> at java.lang.ClassLoader.loadClass(ClassLoader.java:247)[:1.6.0_25] >> >>>> ... 40 more >> >>> >> >>> I have defined the following feature: >> >>>> >> >>>> <feature name="trs-hibernate" version="${project.version}"> >> >>>> >> >>>> >> >>>> <bundle>mvn:org.hibernate/com.springsource.org.hibernate/3.2.6.ga</bundle> >> >>>> <bundle>mvn:org.dom4j/com.springsource.org.dom4j/1.6.1</bundle> >> >>>> >> >>>> >> >>>> <bundle>mvn:org.jboss.javassist/com.springsource.javassist/3.3.0.ga</bundle> >> >>>> >> >>>> >> >>>> <bundle>mvn:org.objectweb.asm/com.springsource.org.objectweb.asm/1.5.3</bundle> >> >>>> >> >>>> >> >>>> <bundle>mvn:org.objectweb.asm/com.springsource.org.objectweb.asm.attrs/1.5.3</bundle> >> >>>> <bundle>mvn:org.antlr/com.springsource.antlr/2.7.7</bundle> >> >>>> <bundle>mvn:aspectj/aspectjweaver/1.6.6.RELEASE</bundle> >> >>>> <bundle>mvn:aspectj/aspectjruntime/1.6.6.RELEASE</bundle> >> >>>> </feature> >> >>> >> >>> I have also tried to change the startlevel of the above bundles (to >> >>> 50) >> >>> to make sure they are started before my bundles (that use Hibernate) >> >>> is >> >>> started. But the start level does not seem to be the problem. Is the >> >>> problem >> >>> that the bundles need to be present when the bundles in >> >>> startup.properties >> >>> are installed? Will bundles deployed using the deploy folder be >> >>> treated >> >>> "equal" to the bundles in startup.properties? >> >>> Is there anyway to get this to work using Karaf features? >> >>> /Bengt >> >> >> > >> > > >
