2016-11-23 120 views
0

我使用Apache Tomcat作爲我的Web服務器。我有一個RESTful Web服務,它從Neo4J圖形數據庫中提取數據。定期更新圖表數據庫的Neo4J。除非我重新啓動tomcat服務器,否則我的Web服務不會獲取新的結果。因此,我需要在每次成功構建Neo4J圖形後重新啓動tomcat服務器,(我認爲這不是一種好的做法)。Tomcat服務器需要重新啓動才能獲取更新的Neo4J數據庫

需要幫助。

[編輯]

所以,我的web服務具有其在屬性文件中定義的路徑讀取Neo4j的文件夾中。

NEO4J_PATH = /home/user/databases/GraphDB/Neo4Jdb 

我的Tomcat安裝在/home/user/softwares/tomcat

我的Web服務代碼保存在/home/user/software/tomcat/webapps/webservice

每天,我Neo4Jdb得到更新。當我在不重新啓動tomcat服務器的情況下執行Web服務調用時,不會顯示新的結果。只有在我重新啓動服務器之後,纔會顯示新的結果。

+0

你用什麼驅動程序爲Neo4j? – Gabriel

+0

@Gabriel我正在使用Neo4J java驅動程序。 – Kabhi

+0

看起來像其他事情正在發生,因爲它需要重置數據庫以檢索最新值是沒有意義的。也許有東西被緩存?也許這個問題中缺少一些細節? –

回答

1

它看起來像在Tomcat中運行的應用程序使用embedded Neo4j instance,但帶有圖形數據的目錄由另一個進程更新?這是一個災難(或至少顯着的運行時間損壞)的配方。 Neo4j是一個(圖表)數據庫管理系統,它應該管理它的數據:任何修改應該通過它在它運行時發生。

我看到2種方法在這裏:

  • 有應用程序公開的API來更新數據
  • 已應用更新目錄之前停止嵌入的實例(雖然一個API),然後開始一個新的實例
+0

是的,你說的正確的是,TC webapps中部署的war文件在目錄由另一個進程構建後使用「嵌入式Neo4J實例」。你能否解釋一下上面提到的兩種方式,尤其是第二種。我怎樣才能確保我不需要每次都重啓tomcat? – Kabhi

+0

爲避免重新啓動Tomcat,它需要重新啓動嵌入式Neo4j實例,並且需要知道何時執行該操作,因此我提到了API。它可以是HTTP端點,JMX MBean公開操作,消息隊列等等。或者它甚至可以是預定的行動(每天5點)。 –

相關問題