Hi there, any solution to this or do we need to dig deeper here? Cheers,
/peter neubauer GTalk: neubauer.peter Skype peter.neubauer Phone +46 704 106975 LinkedIn http://www.linkedin.com/in/neubauer Twitter http://twitter.com/peterneubauer http://www.neo4j.org - Your high performance graph database. http://startupbootcamp.org/ - Ă–resund - Innovation happens HERE. http://www.thoughtmade.com - Scandinavia's coolest Bring-a-Thing party. On Mon, May 16, 2011 at 3:28 PM, Jean-Pierre Bergamin <jpberga...@gmail.com>wrote: > This could be the problem, yes. The "repository factories" that create > the repositories from the interface definitions would need to import > the domain specific packages that contain the interfaces to have > access to them - which requires buddy loading. > > It seems as if the CGLIB enhanced class > org.springframework.data.graph.neo4j.config.Neo4jConfiguration cannot > be created when the app starts up. This is the relevant part of the > log file: > > [2011-05-16 15:10:49.467] region-dm-3 > o.s.beans.factory.support.DefaultListableBeanFactory > Creating shared instance of singleton bean > 'org.springframework.data.graph.neo4j.config.Neo4jConfiguration#0' > [2011-05-16 15:10:49.467] region-dm-3 > o.s.beans.factory.support.DefaultListableBeanFactory > Creating instance of bean > 'org.springframework.data.graph.neo4j.config.Neo4jConfiguration#0' > [2011-05-16 15:10:49.471] region-dm-3 > org.springframework.beans.factory.annotation.InjectionMetadata > Found injected element on class > > [org.springframework.data.graph.neo4j.config.Neo4jConfiguration$$EnhancerByCGLIB$$775b2448$$EnhancerByCGLIB$$e7c2c330$$EnhancerByCGLIB$$4422c70a]: > AutowiredFieldElement for private javax.validation.Validator > org.springframework.data.graph.neo4j.config.Neo4jConfiguration.validator > [2011-05-16 15:10:49.471] region-dm-3 > org.springframework.beans.factory.annotation.InjectionMetadata > Found injected element on class > > [org.springframework.data.graph.neo4j.config.Neo4jConfiguration$$EnhancerByCGLIB$$775b2448$$EnhancerByCGLIB$$e7c2c330$$EnhancerByCGLIB$$4422c70a]: > AutowiredMethodElement for public void > > org.springframework.data.graph.neo4j.config.Neo4jConfiguration.setGraphDatabaseService(org.neo4j.graphdb.GraphDatabaseService) > [2011-05-16 15:10:49.471] region-dm-3 > org.springframework.beans.factory.annotation.InjectionMetadata > Found injected element on class > > [org.springframework.data.graph.neo4j.config.Neo4jConfiguration$$EnhancerByCGLIB$$775b2448$$EnhancerByCGLIB$$e7c2c330$$EnhancerByCGLIB$$4422c70a]: > AutowiredMethodElement for public void > > org.springframework.data.graph.neo4j.config.Neo4jConfiguration.setEntityManagerFactory(javax.persistence.EntityManagerFactory) > [2011-05-16 15:10:49.471] region-dm-3 > o.s.beans.factory.support.DefaultListableBeanFactory > Eagerly caching bean > 'org.springframework.data.graph.neo4j.config.Neo4jConfiguration#0' to > allow for resolving potential circular references > [2011-05-16 15:10:49.471] region-dm-3 > org.springframework.beans.CachedIntrospectionResults > Getting BeanInfo for class > > [org.springframework.data.graph.neo4j.config.Neo4jConfiguration$$EnhancerByCGLIB$$775b2448$$EnhancerByCGLIB$$e7c2c330$$EnhancerByCGLIB$$4422c70a] > [2011-05-16 15:10:49.472] region-dm-3 > org.springframework.osgi.util.DebugUtils > Could not find class > > [org.springframework.data.graph.neo4j.config.Neo4jConfiguration$$EnhancerByCGLIB$$775b2448$$EnhancerByCGLIB$$e7c2c330$$EnhancerByCGLIB$$4422c70aBeanInfo] > required by [neo4j.domain(com.example.neo4j.domain)] scanning > available bundles > [2011-05-16 15:10:49.472] region-dm-3 > org.springframework.osgi.util.DebugUtils > Class is correctly imported as version [1.0.0], checking providing > bundles > [2011-05-16 15:10:49.476] region-dm-3 > org.springframework.osgi.util.DebugUtils > Bundle [Spring Data Neo4J (org.springframework.data.neo4j)] exports > [org.springframework.data.graph.neo4j.config] as version > [1.1.0.BUILD-SNAPSHOT] but version [1.0.0] was required > [2011-05-16 15:10:49.477] region-dm-3 > org.springframework.osgi.util.DebugUtils > Could not find class > > [org.springframework.data.graph.neo4j.config.Neo4jConfiguration$$EnhancerByCGLIB$$775b2448$$EnhancerByCGLIB$$e7c2c330BeanInfo] > required by [neo4j.domain(com.example.neo4j.domain)] scanning > available bundles > [2011-05-16 15:10:49.477] region-dm-3 > org.springframework.osgi.util.DebugUtils > Class is correctly imported as version [1.0.0], checking providing > bundles > [2011-05-16 15:10:49.481] region-dm-3 > org.springframework.osgi.util.DebugUtils > Bundle [Spring Data Neo4J (org.springframework.data.neo4j)] exports > [org.springframework.data.graph.neo4j.config] as version > [1.1.0.BUILD-SNAPSHOT] but version [1.0.0] was required > [2011-05-16 15:10:49.482] region-dm-3 > org.springframework.osgi.util.DebugUtils > Could not find class > > [org.springframework.data.graph.neo4j.config.Neo4jConfiguration$$EnhancerByCGLIB$$775b2448BeanInfo] > required by [neo4j.domain(com.example.neo4j.domain)] scanning > available bundles > [2011-05-16 15:10:49.482] region-dm-3 > org.springframework.osgi.util.DebugUtils > Class is correctly imported as version [1.0.0], checking providing > bundles > [2011-05-16 15:10:49.486] region-dm-3 > org.springframework.osgi.util.DebugUtils > Bundle [Spring Data Neo4J (org.springframework.data.neo4j)] exports > [org.springframework.data.graph.neo4j.config] as version > [1.1.0.BUILD-SNAPSHOT] but version [1.0.0] was required > [2011-05-16 15:10:49.487] region-dm-3 > org.springframework.osgi.util.DebugUtils > Could not find class > [org.springframework.data.graph.neo4j.config.Neo4jConfigurationBeanInfo] > required by [neo4j.domain(com.example.neo4j.domain)] scanning > available bundles > [2011-05-16 15:10:49.487] region-dm-3 > org.springframework.osgi.util.DebugUtils > Class is correctly imported as version [1.0.0], checking providing > bundles > [2011-05-16 15:10:49.491] region-dm-3 > org.springframework.osgi.util.DebugUtils > Bundle [Spring Data Neo4J (org.springframework.data.neo4j)] exports > [org.springframework.data.graph.neo4j.config] as version > [1.1.0.BUILD-SNAPSHOT] but version [1.0.0] was required > [2011-05-16 15:10:49.492] region-dm-3 > org.springframework.osgi.util.DebugUtils > Could not find class [java.lang.ObjectBeanInfo] required by > [neo4j.domain(com.example.neo4j.domain)] scanning available bundles > [2011-05-16 15:10:49.493] region-dm-3 > org.springframework.beans.CachedIntrospectionResults > Caching PropertyDescriptors for class > > [org.springframework.data.graph.neo4j.config.Neo4jConfiguration$$EnhancerByCGLIB$$775b2448$$EnhancerByCGLIB$$e7c2c330$$EnhancerByCGLIB$$4422c70a] > [2011-05-16 15:10:49.493] region-dm-3 > org.springframework.beans.CachedIntrospectionResults > Found bean property 'class' of type [java.lang.Class] > [2011-05-16 15:10:49.493] region-dm-3 > org.springframework.beans.CachedIntrospectionResults > Found bean property 'entityManagerFactory' of type > [javax.persistence.EntityManagerFactory] > > > 2011/5/15 Neale Upstone <neale.upst...@opencredo.com>: > > In OSGi, missing classes can be down to which bundles are visible to > > the bundle doing the scanning. In this case, whatever is doing the > > classpath scanning cannot see the bundle exporting your domain package. > > > > From a number of years back, I remember having to use > > eclipse-registerbuddy to solve a classloader visibility issue. I'm not > > sure what the standard approach to this became. A quick search doesn't > > deliver anything definitive for bundle-buddypolicy, which I suspect is > > the standardised mechanism. > > > > > > > > On 13/05/2011 15:10, Jean-Pierre Bergamin wrote: > >> I just could resove some more issues. > >> First of all I had to excplicitely add an Import-Package directive in > >> the template.mf of our project for packages that are not recognized by > >> bundlor (as the one for the missing Neo4jConfiguration): > >> > >> Import-Package: > >> org.springframework.data.graph.neo4j.config;version="[1.1.0, 1.2.0)", > >> org.springframework.data.repository.support;version="[1.0.0, 1.2.0)", > >> org.springframework.transaction.aspectj;version="[3.0, 3.1)" > >> > >> I also had to put Import-Pacakge statements for cglib packages to the > >> spring data neo4j bundle. > >> > >> The next problem I'm facing is that graph repositories cannot be > >> injected, because they seem not to be created by SDG: > >> > >> [2011-05-13 16:06:29.786] region-dm-0<AG0000E> > >> Application context creation failure for bundle > >> 'com.example.neo4j.domain' version '0.0.1.BUILD-SNAPSHOT'. > >> org.springframework.beans.factory.BeanCreationException: Error > >> creating bean with name 'serviceRepositoryImpl': Injection of > >> autowired dependencies failed; nested exception is > >> org.springframework.beans.factory.BeanCreationException: Could not > >> autowire field: private com.example.neo4j.ServiceRepository > >> com.example.neo4j.ServiceRepositoryImpl.serviceRepository; nested > >> exception is > org.springframework.beans.factory.NoSuchBeanDefinitionException: > >> No matching bean of type [com.example.neo4j.ServiceRepository] found > >> for dependency: expected at least 1 bean which qualifies as autowire > >> candidate for this dependency. Dependency annotations: > >> {@org.springframework.beans.factory.annotation.Autowired(required=true)} > >> at > org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:285) > >> at > org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1074) > >> at > org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:517) > >> at > org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456) > >> at > org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:291) > >> at > org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222) > >> at > org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:288) > >> at > org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:190) > >> at > org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:580) > >> 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 > org.eclipse.virgo.kernel.agent.dm.ContextPropagatingTaskExecutor$2.run(ContextPropagatingTaskExecutor.java:95) > >> at > java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) > >> at > java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) > >> at java.lang.Thread.run(Thread.java:662) > >> Caused by: org.springframework.beans.factory.BeanCreationException: > >> Could not autowire field: private com.example.neo4j.ServiceRepository > >> com.example.neo4j.ServiceRepositoryImpl.serviceRepository; nested > >> exception is > org.springframework.beans.factory.NoSuchBeanDefinitionException: > >> No matching bean of type [com.example.neo4j.ServiceRepository] found > >> for dependency: expected at least 1 bean which qualifies as autowire > >> candidate for this dependency. Dependency annotations: > >> {@org.springframework.beans.factory.annotation.Autowired(required=true)} > >> at > org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:502) > >> at > org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:84) > >> at > org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:282) > >> ... 18 common frames omitted > >> Caused by: > org.springframework.beans.factory.NoSuchBeanDefinitionException: > >> No matching bean of type [com.example.neo4j.ServiceRepository] found > >> for dependency: expected at least 1 bean which qualifies as autowire > >> candidate for this dependency. Dependency annotations: > >> {@org.springframework.beans.factory.annotation.Autowired(required=true)} > >> at > org.springframework.beans.factory.support.DefaultListableBeanFactory.raiseNoSuchBeanDefinitionException(DefaultListableBeanFactory.java:920) > >> at > org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:789) > >> at > org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:703) > >> at > org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:474) > >> ... 20 common frames omitted > >> > >> > >> Any ideas about that? > >> > >> > >> Best regards, > >> James > >> > >> > >> 2011/5/13 Jean-Pierre Bergamin<jpberga...@gmail.com>: > >>> SDG is using bundlor to generate the MANIFEST.MF file.I already fixed > >>> the MANIFEST and the spring data neo4j bundle can now be resolved. > >>> > >>> But when the spring application context is loaded, the class > >>> "org.springframework.data.graph.neo4j.config.Neo4jConfiguration" > >>> cannot be found during bean postprocessing and aspectj magic (see > >>> stacktrace below). > >>> The class is available and exported. I checked that with clhas and > >>> clexport on the Virgo console. Does maybe the kernel space of Virgo > >>> has to to know the spring data neo4j bundle, because this aspectj > >>> "enhancements" are performed there? > >>> > >>> > >>> Best regards > >>> James > >>> > >>> [2011-05-12 16:44:23.865] region-dm-14<AG0000E> > >>> Application context creation failure for bundle > >>> 'com.example.neo4j.domain' version '0.0.1.BUILD-SNAPSHOT'. > >>> java.lang.IllegalStateException: Cannot load configuration class: > >>> org.springframework.data.graph.neo4j.config.Neo4jConfiguration > >>> at > org.springframework.context.annotation.ConfigurationClassPostProcessor.enhanceConfigurationClasses(ConfigurationClassPostProcessor.java:246) > >>> at > org.springframework.context.annotation.ConfigurationClassPostProcessor.postProcessBeanFactory(ConfigurationClassPostProcessor.java:160) > >>> at > org.springframework.osgi.context.support.AbstractDelegatedExecutionApplicationContext.invokeBeanFactoryPostProcessors(AbstractDelegatedExecutionApplicationContext.java:479) > >>> at > org.springframework.osgi.context.support.AbstractDelegatedExecutionApplicationContext.invokeBeanFactoryPostProcessors(AbstractDelegatedExecutionApplicationContext.java:467) > >>> at > org.springframework.osgi.context.support.AbstractDelegatedExecutionApplicationContext.invokeBeanFactoryPostProcessors(AbstractDelegatedExecutionApplicationContext.java:395) > >>> at > org.springframework.osgi.context.support.AbstractDelegatedExecutionApplicationContext$3.run(AbstractDelegatedExecutionApplicationContext.java:281) > >>> at > org.springframework.osgi.util.internal.PrivilegedUtils.executeWithCustomTCCL(PrivilegedUtils.java:85) > >>> at > org.springframework.osgi.context.support.AbstractDelegatedExecutionApplicationContext.startRefresh(AbstractDelegatedExecutionApplicationContext.java:247) > >>> at > org.springframework.osgi.extender.internal.dependencies.startup.DependencyWaiterApplicationContextExecutor.stageOne(DependencyWaiterApplicationContextExecutor.java:214) > >>> at > org.springframework.osgi.extender.internal.dependencies.startup.DependencyWaiterApplicationContextExecutor.refresh(DependencyWaiterApplicationContextExecutor.java:169) > >>> at > org.springframework.osgi.context.support.AbstractDelegatedExecutionApplicationContext.refresh(AbstractDelegatedExecutionApplicationContext.java:175) > >>> at > org.springframework.osgi.extender.internal.activator.ContextLoaderListener$2.run(ContextLoaderListener.java:716) > >>> at > org.eclipse.virgo.kernel.agent.dm.ContextPropagatingTaskExecutor$2.run(ContextPropagatingTaskExecutor.java:95) > >>> at > java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) > >>> at > java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) > >>> > >>> > >>> > >>> 2011/5/13 Nicolas Jouanin<nicolas.joua...@gmail.com> > >>>> Well, at the minimum, it's only a question of adding some extra > headers > >>>> (Bundle-Symbolic, Export-Package; ...) in the package MANIFEST and > this can > >>>> be done automatically using the maven-bundle-plugin. > >>>> You can have a look at Neo4j pom file or this second article : > >>>> > http://wiki.escapek.org/display/DEV/Create+OSGi+bundle+from+regular+jar+archive > >>>> > >>>> > >>>> > >>>> 2011/5/13 Michael Hunger<michael.hun...@neotechnology.com> > >>>> > >>>>> The issue is about Spring Data Graph not being correctly packaged as > OSGi > >>>>> bundle / compatible jar. > >>>>> > >>>>> And I have neither the knowledge nor the resources at the moment to > fix > >>>>> that. > >>>>> > >>>>> So if any one of you can help out with that, this would be most > welcome. > >>>>> > >>>>> Thanks > >>>>> > >>>>> Michael > >>>>> > >>>>> Am 13.05.2011 um 11:42 schrieb Nicolas Jouanin: > >>>>> > >>>>>> Hi, > >>>>>> > >>>>>> I've written an article [1] showing how to run neo4j embedded > database > >>>>>> inside an OSGi container. Starting from that I think you can create > a > >>>>> bundle > >>>>>> which uses this database to create the appropriate Spring data > >>>>>> configuration. I suppose that spring-data-graph is packaged as a > OSGi > >>>>>> compatible jar, so using spring-dm too should do it. > >>>>>> > >>>>>> > >>>>>> [1] > >>>>> > http://wiki.escapek.org/display/DEV/Neo4j+community+edition+installation > >>>>>> 2011/5/13 Michael Hunger<michael.hun...@neotechnology.com> > >>>>>> > >>>>>>> I'm no expert in OSGi so I did just the minimal thing, adding > bundlor > >>>>>>> information to the maven build. This is obviously not successful > enough. > >>>>>>> > >>>>>>> So I would be very happy I someone would pull spring data graph put > in > >>>>> the > >>>>>>> correct OSGi information and send me a pull request. > >>>>>>> > >>>>>>> Cheers > >>>>>>> > >>>>>>> Michael > >>>>>>> > >>>>>>> Am 13.05.2011 um 11:26 schrieb Jean-Pierre Bergamin: > >>>>>>> > >>>>>>>> Dear neo4j community > >>>>>>>> > >>>>>>>> I'm so free to cross post a question to this list that I already > posted > >>>>>>> in > >>>>>>>> the spring forum ( > >>>>>>>> > >>>>> > http://forum.springsource.org/showthread.php?109267-Spring-Data-Graph-in-OSGi-environment > >>>>>>> ), > >>>>>>>> since most of the SDG experts probably are subscribed to this > list. ;-) > >>>>>>>> Could anyone get spring data graph successfully up and running in > an > >>>>> OSGi > >>>>>>>> container? > >>>>>>>> > >>>>>>>> > >>>>>>>> Best regards, > >>>>>>>> James > > > > _______________________________________________ > > Neo4j mailing list > > User@lists.neo4j.org > > https://lists.neo4j.org/mailman/listinfo/user > > > _______________________________________________ > Neo4j mailing list > User@lists.neo4j.org > https://lists.neo4j.org/mailman/listinfo/user > _______________________________________________ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user