我有Jersery Rest 服务,并且我正在使用Neo4j 嵌入式数据库来为请求提供数据服务。
现在,当我发出并发GET请求时,它工作正常。
但是当我发出并发POST请求时,它给出了以下异常:
Caused by: org.neo4j.kernel.lifecycle.LifecycleException: Component 'org.neo4j.kernel.StoreLockerLifecycleAdapter@62f1ca5e' was successfully initialized, but failed to start. Please see attached cause exception.
at org.neo4j.kernel.lifecycle.LifeSupport$LifecycleInstance.start(LifeSupport.java:504)
at org.neo4j.kernel.lifecycle.LifeSupport.start(LifeSupport.java:115)
at org.neo4j.kernel.InternalAbstractGraphDatabase.run(InternalAbstractGraphDatabase.java:296)
... 42 more
Caused by: org.neo4j.kernel.StoreLockException: Could not create lock file
at org.neo4j.kernel.StoreLocker.checkLock(StoreLocker.java:85)
at org.neo4j.kernel.StoreLockerLifecycleAdapter.start(StoreLockerLifecycleAdapter.java:40)
at org.neo4j.kernel.lifecycle.LifeSupport$LifecycleInstance.start(LifeSupport.java:498)
我知道问题是如果已经有 neo4j 的实例正在运行,我们就不能用另一个线程访问它。
解决方案是Neo4j HA
但是由于我没有足够的时间来配置 Neo4j HA 集群,任何人都可以建议我如何使POST请求成为单线程(意味着没有并发线程同时访问 Neo4j)。
任何链接或教程。
编辑
我像这样开始neo4j:
GraphDatabaseService graphdb = new GraphDatabaseFactory().newEmbeddedDatabase("D:/GraphDB");'
在finally
街区我正在做
graphdb.shutdown();