There are several blogs out there on how to get Hibernate running.
That said, it isn't really an OSGi problem that Hibernate and Spring are
written in a way that prevents sane class-loading, that is pretty much all it 
is.

You don't need a FAB nor an uberbundle to get it working, all you need are
a few fragments.


On Jan 29, 2013, at 4:36 AM, James Carman <[email protected]> wrote:

> Yes, OpenJPA will save you a lot of headaches, since it is designed to work 
> in an OSGi environment.  
> 
> On Jan 29, 2013, at 6:19 AM, Bram Pouwelse <[email protected]> wrote:
> 
>> Hi Gonzalo,
>> 
>> I've used Hibernate in Karaf in the past got it al working based on on
>> Hibernate bundles created as described in this blog post:
>> http://iocanel.blogspot.nl/2010/07/wicket-spring-3-jpa2-hibernate-osgi.html
>> 
>> I was able to update these bundles to Hibernate 3.6.2 but switched to
>> OpenJPA after all.
>> 
>> Regards,
>> Bram
>> 
>> 
>> 
>> 2013/1/29 Jean-Baptiste Onofré <[email protected]>:
>>> Hi Gonzalo,
>>> 
>>> my comments inline:
>>> 
>>> 
>>>> First.
>>>>    Why do we have to repackage every library is not in the form of
>>>> bundle?
>>>>    It would be easier, more manageable, to wrap missing libraries (not
>>>> in the form of a bundle) around a container that describes its contents.
>>>> This way something like, say, apache.commons does not need to be
>>>> unpacked and packed with a new manifiest. This method will break signing
>>>> if any, but proposed one does not.
>>> 
>>> A lot of library (like commons) are already bundles.
>>> The problem using wrap is that most of the time the OSGi statements are not
>>> correct. That's why creating a bundle is required.
>>> 
>>> 
>>>> 
>>>> 
>>>> Second.
>>>>    This project (in this case OSGi-> Felix) is supposed to be created
>>>> to resolve library mess. But I can only find references to peculiarities
>>>> to the implementation of the class loaders that makes every old project
>>>> incompatible without modifications. Say Hibernate. Do I have to use
>>>> packages that only springsource Enterprise provides? This is a little
>>>> pain because if the bundle is not there, is not anywhere.
>>> 
>>> Karaf is an OSGi container. Classloaders are handled in a different way in
>>> OSGi.
>>> 
>>> 
>>>> 
>>>> 
>>>> Third.
>>>>    After fighting with dependencies for a long time. I repackaged
>>>> hibernate, spring and friend into a new package. And found that nothing
>>>> works together. I was smart enough to get spring 3.0.7-RELEASE that
>>>> comes with karaf. But found following problem that I'm not able to
>>>> solve:
>>> 
>>> Creating a "big" bundle mean that you create a single classloader. It works
>>> but it's ugly IMHO.
>>> Fragment can do the trick too.
>>> 
>>> I'm not sure to follow your issues with Hibernate and Spring.
>>> 
>>> Regards
>>> JB
>>> 
>>> 
>>> 
>>>> 
>>>> 
>>>> But the class org/hibernate/cfg/Configuration is packaged with the rest.
>>>> And it must find it. Where is the problem?
>>>> 
>>>> I tried package different versions of hibernate that is the thing that I
>>>> can touch. Because Spring is too much to repackage it. So I have to
>>>> stick with the two versions included in the container, 3.0.7-RELEASE and
>>>> 3.1 whatever.
>>>> 
>>>> Any help on how to make it work?
>>>> 
>>>> 
>>>> I read everywhere: Switch to openJPA it does bundles and works better
>>>> with OSGi. But I just have much built on hibernate and don't want to
>>>> switch. I want to learn how to make every project work. Don't want to
>>>> have to do a switch to another project everytime I have some missing
>>>> package (bundle) that makes the project not to work on osgi.
>>>> 
>>>> Thank you in advance.
>>>> It will be a great project once this kind of problems are solved.  In
>>>> effect cxf works great!
>>>> 
>>>> 
>>>> -----------------------------------
>>>> 
>>>> Exception in thread "SpringOsgiExtenderThread-4"
>>>> org.springframework.beans.factory.BeanCreationException: Error creating
>>>> bean with name 'crmSessionFactoryBean' defined in URL
>>>> [bundle://196.0:0/META-INF/spring/hibernate-spring-beans.xml]:
>>>> Instantiation of bean failed; nested exception is
>>>> org.springframework.beans.BeanInstantiationException: Could not
>>>> instantiate bean class
>>>> [org.springframework.orm.hibernate3.LocalSessionFactoryBean]:
>>>> Constructor threw exception; nested exception is
>>>> java.lang.NoClassDefFoundError: org/hibernate/cfg/Configuration
>>>>        at
>>>> 
>>>> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateBean(AbstractAutowireCapableBeanFactory.java:964)
>>>>        at
>>>> 
>>>> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:910)
>>>>        at
>>>> 
>>>> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:484)
>>>>        at
>>>> 
>>>> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:455)
>>>>        at org.springframework.beans.factory.support.AbstractBeanFactory
>>>> $1.getObject(AbstractBeanFactory.java:293)
>>>>        at
>>>> 
>>>> org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
>>>>        at
>>>> 
>>>> org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:290)
>>>>        at
>>>> 
>>>> org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:192)
>>>>        at
>>>> 
>>>> org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:567)
>>>>        at
>>>> 
>>>> org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:895)
>>>>        at
>>>> 
>>>> org.springframework.osgi.context.support.AbstractDelegatedExecutionApplicationContext.access$1600(AbstractDelegatedExecutionApplicationContext.java:69)
>>>>        at
>>>> 
>>>> org.springframework.osgi.context.support.AbstractDelegatedExecutionApplicationContext$4.run(AbstractDelegatedExecutionApplicationContext.java:355)
>>>>        at
>>>> 
>>>> org.springframework.osgi.util.internal.PrivilegedUtils.executeWithCustomTCCL(PrivilegedUtils.java:85)
>>>>        at
>>>> 
>>>> org.springframework.osgi.context.support.AbstractDelegatedExecutionApplicationContext.completeRefresh(AbstractDelegatedExecutionApplicationContext.java:320)
>>>>        at
>>>> 
>>>> org.springframework.osgi.extender.internal.dependencies.startup.DependencyWaiterApplicationContextExecutor$CompleteRefreshTask.run(DependencyWaiterApplicationContextExecutor.java:132)
>>>>        at java.lang.Thread.run(Thread.java:679)
>>>> Caused by: org.springframework.beans.BeanInstantiationException: Could
>>>> not instantiate bean class
>>>> [org.springframework.orm.hibernate3.LocalSessionFactoryBean]:
>>>> Constructor threw exception; nested exception is
>>>> java.lang.NoClassDefFoundError: org/hibernate/cfg/Configuration
>>>>        at
>>>> org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:141)
>>>>        at
>>>> 
>>>> org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:74)
>>>>        at
>>>> 
>>>> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateBean(AbstractAutowireCapableBeanFactory.java:957)
>>>>        ... 15 more
>>>> Caused by: java.lang.NoClassDefFoundError:
>>>> org/hibernate/cfg/Configuration
>>>>        at
>>>> 
>>>> org.springframework.orm.hibernate3.LocalSessionFactoryBean.<init>(LocalSessionFactoryBean.java:189)
>>>>        at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native
>>>> Method)
>>>>        at
>>>> 
>>>> sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
>>>>        at
>>>> 
>>>> sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
>>>>        at
>>>> java.lang.reflect.Constructor.newInstance(Constructor.java:532)
>>>>        at
>>>> org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:126)
>>>>        ... 17 more
>>>> 
>>>> 
>>> 
>>> --
>>> Jean-Baptiste Onofré
>>> [email protected]
>>> http://blog.nanthrax.net
>>> Talend - http://www.talend.com
> 

Reply via email to