2013-01-16 5 views
5

tutorial how to embed Neo4j in a java application zaleca rejestracji hak zamykania tak:Jaki jest prawidłowy sposób rejestracji haka zamknięcia w Spring 3?

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

Zastanawiam się, gdzie najlepsze miejsce, aby umieścić ten kod - czy w rzeczywistości żadnego kodu, który trzeba uruchomić raz podczas uruchamiania wiosną. Czy to po prostu przypadek registering a bean with an init method i umieszczenie kodu w tym?

Chciałbym wiedzieć o tym, a dokładniej o tym, jak inni zarejestrowali hak zamykający podczas korzystania z osadzonego Neo4j w swojej wiosennej aplikacji.

Odpowiedz

8

Wystarczy zadeklarować swoją fasolkę dla grafowa baza danych-usługi z prawidłowym 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

Masz odpowiednik konfiguracji adnotacji? – chrisjleu

+0

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

+1

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

-3

Korzystanie 1.8.1 Neo4j i SDN 2.1 - powyższe nie działa na moim Eclipse/środowiska Jetty.

Prawie za każdym razem jak start/stop z kontroli Eclipse "server", widzę to na starcie:

INFO: non czyste zamknięcie wykryty w dzienniku ...

UWAGA: Nie ustaw jednak "allow-store-upgrade". Myślałem, że to nie ma nic wspólnego z czystym zamknięciem?