2013-01-16 5 views
5

Ein Tutorial auf how to embed Neo4j in a java application empfiehlt Registrierung einen Shutdown-Haken wie so:Wie kann ein Abschalt-Hook in Spring 3 korrekt registriert werden?

Runtime.getRuntime().addShutdownHook(new Thread() { 
    // do shutdown work here 
}); 

Ich frage mich, wo der beste Ort, um diesen Code zu setzen - oder in der Tat jeden Code, der einmal beim Start des Frühlings ausführen muss. Ist es einfach ein Fall von registering a bean with an init method und den Code darin einfügend?

Ich wäre daran interessiert zu wissen, und genauer gesagt, wie andere einen Shutdown Hook registriert haben, wenn sie ein Embedded Neo4j in ihrer Spring-Anwendung verwenden.

Antwort

8

erklären Sie Ihre Bohne für die Graphdatenbank-Service mit dem richtigen 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> 
+0

Haben Sie eine entsprechende Annotationskonfiguration? – chrisjleu

+0

@Bean public GraphDatabaseService graphDatabaseService() {return neue EmbeddedGraphDatabase (storeDir, config); } –

+1

@Bean (destroyMethod = "shutdown") public GraphDatabaseService graphDatabaseService() {return neue EmbeddedGraphDatabase (storeDir, config); } – zebeurton

-3

Mit 1.8.1 Neo4j und SDN 2.1 - über die nicht für meine Eclipse/Jetty Umwelt nicht.

Fast jedes Mal, wenn ich/Stopp mit Eclipse „Server“ Kontrollen beginnen, sehe ich beim Start:

INFO: Nicht sauber Abschaltung auf Protokoll erkannt ...

HINWEIS: Ich habe nicht die "Erlaube-Speicher-Upgrade" Eigenschaft obwohl. Ich dachte, das hätte nichts mit sauberem Abschalten zu tun?