簡體   English   中英

在Jersey REST和Neo4j環境中並發POST請求的問題

[英]Issue with concurrent POST requests with Jersey REST and Neo4j environment

我有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();

不確定GET請求在這種情況下如何工作,也許Neo4j團隊的某人最好提供一個解釋。 我假設您正在初始化和關閉每個請求的graphdb 另外,我最近還沒有接觸過Java,我的建議可能不准確。

我認為我要處理的方式是通過每個請求初始化和關閉graphdb 原因是Neo4j鎖定在圖形數據庫目錄上,並且不允許新線程重新初始化同一目錄上的嵌入式實例(讀取線程安全)。 相反,我寧願使用單例類,該類公開graphdb並將其作為JVM中的共享對象使用。 graphdb.shutdown()可能會出現在Jersey服務的關閉掛鈎中( graphdb僅在服務關閉時關閉)。 這與Pangea的建議一致, ServletContextListener是執行此操作的好地方。 但是,實施方式可能因澤西島而異。

最后,我會禮貌地嘗試通過編輯您的問題,發表評論並詢問有關您問題的背景來尋求幫助的人們。 :)

回答這個問題為時已晚,但是如果有人遇到同樣的問題,這就是我如何解決的問題。 保持單例課程。

      GraphDatabaseService graphdb=null;
      if(graphdb.isAvailable()&& graphdb!=null)
       {
            return graphdb;
       }
       else
        {
           graphdb = new GraphDatabaseFactory().newEmbeddedDatabase("D:/GraphDB");
         return graphdb;
        }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM