2009-06-08 10 views
1

J'utilise maven-jetty-plugin pour exécuter une application Spring. Initialement, la source de données a été déclarée au printemps. En raison de contraintes externes, je l'ai déplacé vers JNDI. La section jetée-env.xml-je utiliser pour le développement local est:Impossible de réutiliser HSQLDB dans Jetty entre les redémarrages

<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> 

Malheureusement, je ne vois pas être en mesure de redémarrer le contexte Web, puisque la base de données reste verrouillée. Des pensées sur ce que je fais mal ici?

Répondre

0

Autorisez-vous un arrêt correct du serveur? C'est à dire. Comment gérez-vous votre environnement de développement? Comment l'arrêtez-vous? Si vous l'exécutez sous Eclipse, il se peut que vous ayez la possibilité d'appuyer sur 'Entrée' sur la console, ce qui arrêtera proprement votre système et provoquera le blocage du fichier par le db. Cependant si vous 'tuez' votre environnement (en cliquant sur le bouton d'arrêt rouge dans Eclipse, ou peut-être ctrl-c depuis la console), HSQLDB peut ne pas avoir de changement pour libérer son verrou basé sur un fichier.

Si vous faites tout cela pour le développement - avez-vous envisagé d'exécuter une base de données en mémoire? Il rend le développement et les tests unitaires automatisés beaucoup plus rapides!

Questions connexes