关于how to embed Neo4j in a java application的教程建议注册一个关闭钩子,如下所示:
Runtime.getRuntime().addShutdownHook( new Thread() {
// do shutdown work here
});
我想知道放置此代码的最佳位置 - 或者实际上在Spring启动时需要运行一次的任何代码。它只是registering a bean with an init method的情况并将代码放入其中吗?
我有兴趣知道这一点,更具体地说,在Spring应用程序中使用嵌入式Neo4j时,其他人如何注册了一个关闭钩子。
答案 0 :(得分:8)
只需使用正确的destroy-method
:
<bean id="graphDatabaseService" class="org.neo4j.kernel.EmbeddedGraphDatabase"
destroy-method="shutdown">
<constructor-arg index="0" value="data/testdb.db"/>
<constructor-arg index="1">
<map>
<entry key="allow_store_upgrade" value="true"/>
</map>
</constructor-arg>
</bean>
答案 1 :(得分:-3)
使用1.8.1 Neo4j和SDN 2.1 - 以上内容对我的Eclipse / Jetty环境不起作用。
几乎每次我使用Eclipse“服务器”控件启动/停止时,我都会在启动时看到:
信息:在日志中检测到非干净关闭...
注意:虽然我没有设置“allow-store-upgrade”属性。我认为这与干净关机无关?