1

これは、私が構築した Spring Data Neo4j スケルトン アプリを使用した PlayFramework です。

https://github.com/tomasmuller/playframework-neo4j-template

最初はplay runすべて正常に動作します。Netty 経由の PlayFramework は dev モードで起動します。したがって、プログラミングを続行し、更新を押して結果を確認できます。

しかし、Neo4j トランザクション マネージャーに関連する構成が不足している可能性があります。または、これは PlayFramework の dev モードに関連している可能性もあります。

例として、別のタイトルの の 13 行目を変更してindex.scala.html、サーバーを再起動せずにインデックス ページをリロードしてみてください。

次の例外が発生します。

play.api.PlayException: Global オブジェクトを初期化できません [null]
...
原因: org.springframework.beans.factory.BeanCreationException: 'graphDatabaseService' という名前の Bean の作成中にエラーが発生しました: Bean のインスタンス化に失敗しました。ネストされた例外は org.springframework.beans.BeanInstantiationException: Bean クラスをインスタンス化できませんでした [org.neo4j.kernel.EmbeddedGraphDatabase]: コンストラクターが例外をスローしました。ネストされた例外は java.lang.RuntimeException: org.neo4j.kernel.lifecycle.LifecycleException: コンポーネント 'org.neo4j.kernel.StoreLockerLifecycleAdapter@20346642' は正常に初期化されましたが、開始できませんでした。添付の原因例外を参照してください。
...
原因: org.neo4j.kernel.StoreLockException: ストア ロック ファイルのロックを取得できません: target/neo4j-db/store_lock
org.neo4j.kernel.StoreLocker.checkLock(StoreLocker.java:90) で ~[neo4j-kernel-1.9.RC1.jar:1.9.RC1]
...

いくつかの構成を試して (成功しませんでした)、リポジトリの問題 n.1で文書化しました。

何が起こっている?構成の問題ですか、それとも Spring Data Neo4j と PlayFramework の組み合わせに関連していますか?

4

2 に答える 2

1

「ロックを取得できません」というのはファイルシステムの問題のように聞こえます (パーミッションなどについて target/neo4j-db/ dir を確認してください)。

于 2013-05-18T22:59:56.853 に答える
0

getGraphDatabaseService.shutdown()メソッド内で Neo4jTemplate から呼び出すことで、このapp/Global.scala onStop問題は解決しました。

/**
 * Sync the context lifecycle with Play's.
 * @param app
 */
override def onStop(app: Application) {
  val  neo4jTemplate:Neo4jTemplate = ctx.getBean(classOf[Neo4jTemplate]);
  neo4jTemplate.getGraphDatabaseService.shutdown();
  ctx.stop()
}

プルリクエストはこちら.

于 2013-08-07T12:22:34.373 に答える