我想在嵌入模式下使用neo4j。正如我所见,不可能在不同的进程中共享GraphDatabase
实例。现在我的想法是使用嵌入在OSGi容器中的neo4j来共享不同组件的相同数据库。编写BundleActivator
创建GraphDB
并将其公开给其他OSGi捆绑包并提供服务是不是一个好主意?
答案 0 :(得分:2)
有An example template setup with tests从neo4j相关组件中制作超级捆绑包。试着告诉我们它是怎么回事。有关典型的激活器,请参阅here。
答案 1 :(得分:1)
现在您可以使用适当的DI来实例化数据库,例如http://docs.neo4j.org/chunked/snapshot/tutorials-java-embedded-osgi.html
//the cache providers
ArrayList<CacheProvider> cacheList = new ArrayList<CacheProvider>();
cacheList.add( new SoftCacheProvider() );
//the index providers
IndexProvider lucene = new LuceneIndexProvider();
ArrayList<IndexProvider> provs = new ArrayList<IndexProvider>();
provs.add( lucene );
ListIndexIterable providers = new ListIndexIterable();
providers.setIndexProviders( provs );
//the database setup
GraphDatabaseFactory gdbf = new GraphDatabaseFactory();
gdbf.setIndexProviders( providers );
gdbf.setCacheProviders( cacheList );
db = gdbf.newEmbeddedDatabase( "target/db" );