Hi Peter, I've tried to run your test case on my forked version. First of all, I got a Framework exception when running the test case out of the box : [Framework Event Dispatcher] DEBUG wrap_mvn_org.apache.lucene_lucene-core_3.1.0 - BundleEvent STARTED [Framework Event Dispatcher] DEBUG org.neo4j.lucene-index - FrameworkEvent ERROR org.osgi.framework.BundleException: The bundle "org.neo4j.lucene-index_1.4.0.SNAPSHOT [9]" could not be resolved. Reason: Missing Constraint: Import-Package: org.apache.lucene.analysis; version="3.0.0"
This shows the lucene-index bundle has a unresolved imported package. That strange because lucene-core is deployed wrapped into a bundle just before. There may be a problem with the wrapping process... So, i changed the test case to use org.apache.servicemix.bundles.lucene:3.0.3_1, which is a bundled version of lucene 3.0.3 that i've been using during my forking tests. Using this bundle version and my forked bundles, I get the execution trace shown below. The test case still fails, but somewhere else. Let me explain: To manage services loaded using JDK service feature from other bundles, my forked version automatically registers declared JDK services as OSGi services. This is done is the OSGiExtensionLoader.registerBundleServices method (https://github.com/njouanin/community/blob/master/kernel/src/main/java/org/neo4j/kernel/impl/osgi/OSGiExtensionLoader.java). So, using my forked version, the LuceneIndexProvider is being exposed as OSGi service, so it is visible to OSGi loader and org.neo4j.kernel.IndexManagerImpl.getIndexProvider shouldn't throw IllegalArgumentException anymore. BUT, as shown below, i know have a exception during datasource initialisation. The LuceneDataSource class is not visible to the kernel bundle, where service registration occurs. So I see two possible solution for this : - change lucene-index bundle to export-package org.neo4j.index.impl.lucene (bad solution) - add a bundle activator in lucene-index bundle to register LuceneIndexProvider service on bundle startup, but I don't know its dependencies. Let me know if my analysis is not clear for you ... PS : changes made to the test case have been comited to git://github.com/njouanin/neo4j-osgi-examples.git [Framework Event Dispatcher] DEBUG org.ops4j.pax.logging.pax-logging-service - BundleEvent STARTED activating null null [Framework Event Dispatcher] DEBUG com.springsource.javax.transaction - BundleEvent STARTED [Framework Event Dispatcher] DEBUG org.neo4j.kernel - BundleEvent STARTED [Framework Event Dispatcher] DEBUG org.neo4j.kernel - ServiceEvent REGISTERED [Framework Event Dispatcher] INFO org.neo4j.kernel.impl.osgi.OSGiExtensionLoader - Bundle org.neo4j.kernel: Service org.neo4j.kernel.impl.transaction.TransactionManagerProvider registered with implementation org.neo4j.kernel.impl.transaction.TransactionManagerProvider[native] [Framework Event Dispatcher] WARN org.neo4j.kernel.impl.osgi.OSGiExtensionLoader - Implementation class org.neo4j.kernel.impl.management.JmxExtension not found by classloader Kernel: attempting to load extensions of type org.neo4j.kernel.Version [Framework Event Dispatcher] DEBUG org.neo4j.kernel - ServiceEvent REGISTERED [Framework Event Dispatcher] INFO org.neo4j.kernel.impl.osgi.OSGiExtensionLoader - Bundle org.neo4j.kernel: Service org.neo4j.kernel.Version registered with implementation Neo4j - Graph Database Kernel 1.4-SNAPSHOT (revision: 1.4.M01-32-g51e2494-dirty) [Framework Event Dispatcher] DEBUG org.apache.servicemix.bundles.lucene - BundleEvent STARTED [Framework Event Dispatcher] DEBUG org.neo4j.lucene-index - BundleEvent STARTED [Framework Event Dispatcher] DEBUG org.neo4j.lucene-index - ServiceEvent REGISTERED [Framework Event Dispatcher] INFO org.neo4j.kernel.impl.osgi.OSGiExtensionLoader - Bundle org.neo4j.lucene-index: Service org.neo4j.graphdb.index.IndexProvider registered with implementation org.neo4j.graphdb.index.IndexProvider[lucene] Kernel: attempting to load extensions of type org.neo4j.kernel.KernelExtension Kernel: attempting to load extensions of type org.neo4j.graphdb.index.IndexProvider org.neo4j.graphdb.TransactionFailureException: Could not create data source lucene-index[lucene-index] at org.neo4j.kernel.impl.transaction.TxModule.registerDataSource(TxModule.java:181) at org.neo4j.index.impl.lucene.LuceneIndexImplementation.<init>(LuceneIndexImplementation.java:72) at org.neo4j.index.impl.lucene.LuceneIndexProvider.load(LuceneIndexProvider.java:38) at org.neo4j.kernel.KernelData.loadIndexImplementations(KernelData.java:146) at org.neo4j.kernel.EmbeddedGraphDbImpl$2.initializeIndexProviders(EmbeddedGraphDbImpl.java:179) at org.neo4j.kernel.GraphDbInstance.start(GraphDbInstance.java:159) at org.neo4j.kernel.EmbeddedGraphDbImpl.<init>(EmbeddedGraphDbImpl.java:189) at org.neo4j.kernel.EmbeddedGraphDatabase.<init>(EmbeddedGraphDatabase.java:79) at org.neo4j.kernel.EmbeddedGraphDatabase.<init>(EmbeddedGraphDatabase.java:63) at org.neo4j.examples.osgi.Neo4jActivator.start(Neo4jActivator.java:41) at org.eclipse.osgi.framework.internal.core.BundleContextImpl$1.run(BundleContextImpl.java:783) at java.security.AccessController.doPrivileged(Native Method) at org.eclipse.osgi.framework.internal.core.BundleContextImpl.startActivator(BundleContextImpl.java:774) at org.eclipse.osgi.framework.internal.core.BundleContextImpl.start(BundleContextImpl.java:755) at org.eclipse.osgi.framework.internal.core.BundleHost.startWorker(BundleHost.java:370) at org.eclipse.osgi.framework.internal.core.AbstractBundle.resume(AbstractBundle.java:374) at org.eclipse.osgi.framework.internal.core.Framework.resumeBundle(Framework.java:1067) at org.eclipse.osgi.framework.internal.core.StartLevelManager.resumeBundles(StartLevelManager.java:561) at org.eclipse.osgi.framework.internal.core.StartLevelManager.resumeBundles(StartLevelManager.java:546) at org.eclipse.osgi.framework.internal.core.StartLevelManager.incFWSL(StartLevelManager.java:459) at org.eclipse.osgi.framework.internal.core.StartLevelManager.doSetStartLevel(StartLevelManager.java:243) at org.eclipse.osgi.framework.internal.core.StartLevelManager.dispatchEvent(StartLevelManager.java:440) at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:227) at org.eclipse.osgi.framework.eventmgr.EventManager$EventThread.run(EventManager.java:337) Caused by: java.lang.ClassNotFoundException: org.neo4j.index.impl.lucene.LuceneDataSource at org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:506) at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:422) at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:410) at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.loadClass(DefaultClassLoader.java:107) at java.lang.ClassLoader.loadClass(ClassLoader.java:248) at java.lang.Class.forName0(Native Method) at java.lang.Class.forName(Class.java:169) at org.neo4j.kernel.impl.transaction.XaDataSourceManager.create(XaDataSourceManager.java:67) at org.neo4j.kernel.impl.transaction.TxModule.registerDataSource(TxModule.java:175) ... 23 more Kernel: attempting to load extensions of type org.neo4j.kernel.Version [Start Level Event Dispatcher] DEBUG BuildByTinyBundlestinybundles3494323386071429083UID - ServiceEvent REGISTERED [Start Level Event Dispatcher] DEBUG BuildByTinyBundlestinybundles3494323386071429083UID - ServiceEvent UNREGISTERING [Framework Event Dispatcher] DEBUG BuildByTinyBundlestinybundles3494323386071429083UID - BundleEvent STOPPED [Framework Event Dispatcher] DEBUG BuildByTinyBundlestinybundles3494323386071429083UID - FrameworkEvent ERROR org.osgi.framework.BundleException: Exception in org.neo4j.examples.osgi.Neo4jActivator.start() of bundle BuildByTinyBundlestinybundles3494323386071429083UID. at org.eclipse.osgi.framework.internal.core.BundleContextImpl.startActivator(BundleContextImpl.java:806) at org.eclipse.osgi.framework.internal.core.BundleContextImpl.start(BundleContextImpl.java:755) at org.eclipse.osgi.framework.internal.core.BundleHost.startWorker(BundleHost.java:370) at org.eclipse.osgi.framework.internal.core.AbstractBundle.resume(AbstractBundle.java:374) at org.eclipse.osgi.framework.internal.core.Framework.resumeBundle(Framework.java:1067) at org.eclipse.osgi.framework.internal.core.StartLevelManager.resumeBundles(StartLevelManager.java:561) at org.eclipse.osgi.framework.internal.core.StartLevelManager.resumeBundles(StartLevelManager.java:546) at org.eclipse.osgi.framework.internal.core.StartLevelManager.incFWSL(StartLevelManager.java:459) at org.eclipse.osgi.framework.internal.core.StartLevelManager.doSetStartLevel(StartLevelManager.java:243) at org.eclipse.osgi.framework.internal.core.StartLevelManager.dispatchEvent(StartLevelManager.java:440) at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:227) at org.eclipse.osgi.framework.eventmgr.EventManager$EventThread.run(EventManager.java:337) Caused by: java.lang.IllegalArgumentException: No index provider 'lucene' found at org.neo4j.kernel.IndexManagerImpl.getIndexProvider(IndexManagerImpl.java:71) at org.neo4j.kernel.IndexManagerImpl.findIndexConfig(IndexManagerImpl.java:104) at org.neo4j.kernel.IndexManagerImpl.getOrCreateIndexConfig(IndexManagerImpl.java:173) at org.neo4j.kernel.IndexManagerImpl.forNodes(IndexManagerImpl.java:244) at org.neo4j.examples.osgi.Neo4jActivator.start(Neo4jActivator.java:43) at org.eclipse.osgi.framework.internal.core.BundleContextImpl$1.run(BundleContextImpl.java:783) at java.security.AccessController.doPrivileged(Native Method) at org.eclipse.osgi.framework.internal.core.BundleContextImpl.startActivator(BundleContextImpl.java:774) ... 11 more [Framework Event Dispatcher] DEBUG org.eclipse.osgi - FrameworkEvent STARTLEVEL CHANGED [Framework Event Dispatcher] DEBUG org.ops4j.pax.exam.spi.probesupport.intern.DefaultResourceWriter_4102799c - BundleEvent INSTALLED [Framework Event Dispatcher] DEBUG org.ops4j.pax.exam.spi.probesupport.intern.DefaultResourceWriter_4102799c - BundleEvent RESOLVED [main] DEBUG org.ops4j.pax.exam.raw.extender.intern.Probe - Test PaxExam-ba231db7-7981-48bb-9b52-94ec505fc5e6 to be in PaxExam-ba231db7-7981-48bb-9b52-94ec505fc5e6,PaxExam-e4039d86-ad59-4cc1-a568-f54ab0b5867f,PaxExam-02ae9fca-aaa3-4028-9297-568a1a4b8dfd,PaxExam-5b5978e7-93ad-4676-aa3b-6565370ad4d6, [main] DEBUG org.ops4j.pax.exam.raw.extender.intern.Probe - Registering Service: org.ops4j.pax.exam.ProbeInvoker with Probe-Signature="PaxExam-ba231db7-7981-48bb-9b52-94ec505fc5e6" and expression="org.ops4j.pax.exam.testforge.BundlesInState;probe" [main] DEBUG org.ops4j.pax.exam.raw.extender.intern.Probe - Test PaxExam-Executable to be in PaxExam-ba231db7-7981-48bb-9b52-94ec505fc5e6,PaxExam-e4039d86-ad59-4cc1-a568-f54ab0b5867f,PaxExam-02ae9fca-aaa3-4028-9297-568a1a4b8dfd,PaxExam-5b5978e7-93ad-4676-aa3b-6565370ad4d6, [main] DEBUG org.ops4j.pax.exam.raw.extender.intern.Probe - Test PaxExam-e4039d86-ad59-4cc1-a568-f54ab0b5867f to be in PaxExam-ba231db7-7981-48bb-9b52-94ec505fc5e6,PaxExam-e4039d86-ad59-4cc1-a568-f54ab0b5867f,PaxExam-02ae9fca-aaa3-4028-9297-568a1a4b8dfd,PaxExam-5b5978e7-93ad-4676-aa3b-6565370ad4d6, [main] DEBUG org.ops4j.pax.exam.raw.extender.intern.Probe - Registering Service: org.ops4j.pax.exam.ProbeInvoker with Probe-Signature="PaxExam-e4039d86-ad59-4cc1-a568-f54ab0b5867f" and expression="org.ops4j.pax.exam.testforge.CountBundles;probe" [main] DEBUG org.ops4j.pax.exam.raw.extender.intern.Probe - Test PaxExam-02ae9fca-aaa3-4028-9297-568a1a4b8dfd to be in PaxExam-ba231db7-7981-48bb-9b52-94ec505fc5e6,PaxExam-e4039d86-ad59-4cc1-a568-f54ab0b5867f,PaxExam-02ae9fca-aaa3-4028-9297-568a1a4b8dfd,PaxExam-5b5978e7-93ad-4676-aa3b-6565370ad4d6, [main] DEBUG org.ops4j.pax.exam.raw.extender.intern.Probe - Registering Service: org.ops4j.pax.exam.ProbeInvoker with Probe-Signature="PaxExam-02ae9fca-aaa3-4028-9297-568a1a4b8dfd" and expression="org.ops4j.pax.exam.testforge.WaitForService;probe" [main] DEBUG org.ops4j.pax.exam.raw.extender.intern.Probe - Test PaxExam-5b5978e7-93ad-4676-aa3b-6565370ad4d6 to be in PaxExam-ba231db7-7981-48bb-9b52-94ec505fc5e6,PaxExam-e4039d86-ad59-4cc1-a568-f54ab0b5867f,PaxExam-02ae9fca-aaa3-4028-9297-568a1a4b8dfd,PaxExam-5b5978e7-93ad-4676-aa3b-6565370ad4d6, [main] DEBUG org.ops4j.pax.exam.raw.extender.intern.Probe - Registering Service: org.ops4j.pax.exam.ProbeInvoker with Probe-Signature="PaxExam-5b5978e7-93ad-4676-aa3b-6565370ad4d6" and expression="org.ops4j.pax.exam.testforge.WaitForService;probe" [main] DEBUG org.ops4j.pax.exam.spi.probesupport.intern.DefaultResourceWriter_4102799c - ServiceEvent REGISTERED [main] DEBUG org.ops4j.pax.exam.spi.probesupport.intern.DefaultResourceWriter_4102799c - ServiceEvent REGISTERED [main] DEBUG org.ops4j.pax.exam.spi.probesupport.intern.DefaultResourceWriter_4102799c - ServiceEvent REGISTERED [main] DEBUG org.ops4j.pax.exam.spi.probesupport.intern.DefaultResourceWriter_4102799c - ServiceEvent REGISTERED [Framework Event Dispatcher] DEBUG org.ops4j.pax.exam.spi.probesupport.intern.DefaultResourceWriter_4102799c - BundleEvent STARTED Tests run: 1, Failures: 1, Errors: 0, Skipped: 0, Time elapsed: 6.141 sec <<< FAILURE! Results : Failed tests: neo4jStartupTest(org.neo4j.examples.osgi.OSGiTest) Tests run: 1, Failures: 1, Errors: 0, Skipped: 0 Le 10 juin 2011 à 10:00, Peter Neubauer a écrit : > Yeah, > that would be great Nicolas! The only thing is that you will need to > build Pax Tinybundles, > > g...@github.com:ops4j/org.ops4j.pax.tinybundles.git since I am using > SNAPSHOT dep there. > > Lemme know if you need help! > > 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 Fri, Jun 10, 2011 at 9:43 AM, Nicolas Jouanin > <nicolas.joua...@gmail.com> wrote: >> Hi, >> I'll try this during the weekend if you agree and I'll let you know. >> >> >> 2011/6/9 Peter Neubauer <peter.neuba...@neotechnology.com> >> >>> Nicolas, >>> I have now a failing testcase (albeit using snapshot versions of PAX >>> stuff, trying to relax that ASAP) at >>> https://github.com/neo4j/neo4j-osgi-examples that exposes the >>> IndexProvider not being found in OSGi environments. >>> >>> Is your fork of Neo4j Community fixing this issue? In that case, it >>> would be great to verify it against the testcase and merge it in! >>> >>> 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 Thu, Jun 2, 2011 at 10:33 AM, Nicolas Jouanin >>> <nicolas.joua...@gmail.com> wrote: >>>> Hi, >>>> >>>> This page may help you : >>> http://wiki.escapek.org/display/DEV/Neo4j+community+edition+installation >>>> >>>> >>>> Le 2 juin 2011 à 09:30, Super Wang a écrit : >>>> >>>>> I've tried to expose org.neo4j.graphdb.GraphDatabaseService as a service >>>>> component directly and use a delegate class as implementation, but >>> failed... >>>>> >>>>> >>>>> On Thu, Jun 2, 2011 at 12:34, Andreas Kollegger < >>>>> andreas.kolleg...@neotechnology.com> wrote: >>>>> >>>>>> Hey, >>>>>> >>>>>> The Neo4j libraries should be usable within OSGi, though we're a bit >>> lax in >>>>>> keeping on top of that. The best approach would be to use one bundle to >>>>>> instantiate the database and advertise the reference as a service for >>> use by >>>>>> other bundles. >>>>>> >>>>>> Cheers, >>>>>> Andreas >>>>>> >>>>>> On Jun 1, 2011, at 8:25 PM, Super Wang wrote: >>>>>> >>>>>>> Hi folks, >>>>>>> >>>>>>> I'm new to neo4j and I'm going to embed neo4j to my OSGI >>>>>> environment(without >>>>>>> Spring) as a component, so I can keep a single instance of graph >>> database >>>>>>> and can make it available for all other bundles. >>>>>>> >>>>>>> Any ideas about how to implement this? >>>>>>> >>>>>>> Thank you very much. >>>>>>> _______________________________________________ >>>>>>> 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 >>>> >>>> _______________________________________________ >>>> 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 >> > _______________________________________________ > 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