2009-06-08 5 views
1

Ich benutze das Maven-Jetty-Plugin, um eine Spring-Anwendung auszuführen. Anfänglich wurde die Datenquelle in Spring deklariert. Aufgrund externer Constratings habe ich es nach JNDI verschoben. Der Steg-env.xml Abschnitt I für die lokale Entwicklung verwenden ist:Kann HSQLDB in Jetty zwischen Neustarts nicht wiederverwenden

<New id="dataSource" class="org.mortbay.jetty.plus.naming.Resource"> 
    <Arg></Arg> 
    <Arg>jdbc/DataSource</Arg> 
    <Arg> 
     <New class="com.mchange.v2.c3p0.ComboPooledDataSource"> 
      <Set name="driverClass">org.hsqldb.jdbcDriver</Set> 
      <Set name="jdbcUrl">jdbc:hsqldb:file:target/file.db;shutdown=true 
      </Set> 
      <Set name="user">sa</Set> 
      <Set name="password"></Set> 
      <Set name="initialPoolSize">3</Set> 
      <Set name="maxPoolSize">5</Set> 
      <Set name="numHelperThreads">2</Set> 
      <Set name="breakAfterAcquireFailure">true</Set> 
     </New> 
    </Arg> 
</New> 

Leider kann ich nicht in der Lage sein sehen, die Web-Kontext neu zu starten, da die Datenbank gesperrt bleibt. Irgendwelche Gedanken darüber, was ich hier falsch mache?

Antwort

0

Erlauben Sie ein sauberes Herunterfahren des Servers? I.e. Wie läuft Ihre Entwicklungsumgebung? Wie schließst du es herunter?

Wenn Sie es unter Eclipse ausführen, haben Sie möglicherweise die Möglichkeit, auf der Konsole die Eingabetaste zu drücken, wodurch Ihr System sauber heruntergefahren wird und die db die Dateisperre freigibt. Wenn Sie jedoch Ihre Umgebung "töten" (indem Sie in Eclipse auf die rote Stopp-Schaltfläche klicken, oder vielleicht auf ctrl-c von der Konsole aus), hat HSQLDB möglicherweise keine Änderung, um seine dateibasierte Sperre aufzuheben.

Wenn Sie dies alles für die Entwicklung tun - haben Sie die Ausführung einer In-Memory-Datenbank berücksichtigt? Es macht die Entwicklung und das automatisierte Komponententesten viel schneller!