2016-11-23 5 views
0

私はApache Tomcatを私のWebサーバーとして使用しています。私は、Neo4Jグラフデータベースからデータを取得するRESTful Webサービスを持っています。 Neo4Jグラフデータベースは定期的に更新されます。 Tomcatサーバーを再起動しない限り、私のWebサービスは新しい結果を取得しません。したがって、Neo4Jグラフの構築が成功するたびにTomcatサーバーを再起動する必要があります(これは良い方法ではないと思います)。更新されたNeo4Jデータベースを取得するにはTomcatサーバーを再起動する必要があります

これに助けが必要です。

[EDIT]

だから、私の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ファイルは、ディレクトリが別のプロセスによってビルドされた後、 'embedded Neo4J instance'を使用するのは間違いありません。上記の2つの方法、特に2番目の方法についてもう少し説明できますか?どのように私はいつもtomcatを再起動する必要はないことを確認できますか? – Kabhi

+0

Tomcatを再起動しないようにするには、埋め込まれたNeo4jインスタンスを再起動する必要があります。それはいつ実行するのかを知る必要があります。 HTTPエンドポイント、JMX MBeanの公開操作、メッセージキューなどが可能です。それともスケジュールされた行動(毎日5時)でもよい。 –

関連する問題