jira.codehaus.org

  • Log In Access more options
    • Online Help
    • Keyboard Shortcuts
    • About JIRA
    • JIRA Credits
    • What?s New
  • Dashboards Access more options (Alt+d)
  • Projects Access more options (Alt+p)
  • Issues Access more options (Alt+i)
  • Maven DbUnit Plugin
  • MDBUNIT-5

Allow shutting down embedded derby from dbunit-maven-plugin

  • Log In
  • Views
    • XML
    • Word
    • Printable

Details

  • Type: Wish Wish
  • Status: Open Open
  • Priority: Major Major
  • Resolution: Unresolved
  • Affects Version/s: None
  • Fix Version/s: None
  • Labels:
    None

Description

Related to MOJO-619:

Currently you cannot shutdown Derby (using the JDBC URL like "jdbc:derby:${project.build.directory}/db;shutdown=true"), because getConnection in this case always throws exception (the explanation of this behavior is here: http://blog.gmane.org/gmane.comp.apache.db.derby.user/month=20060701).

I propose adding some option (like "<onConnectionError>skip</onConnectionError>") to ignore database connection errors and simply to return from the mojo without raising an exception.

This functionality could be quite handy, since in some cases you need to shutdown database after executing some statements against it, just to make sure all subsequent connections to this embedded Derby database will be OK. For example, I use sql-maven-plugin to populate the database before running integration tests against an application deployed into the embedded Jetty container. And since this container runs in the same JVM, the application throws exception during the database startup.

  • Options
    • Sort By Name
    • Sort By Date
    • Ascending
    • Descending
    • Download All

Attachments

  1. Text File
    shutdown-patch.txt
    23/Mar/10 5:21 AM
    5 kB
    Kristian Koehler

Activity

Ascending order - Click to sort in descending order
  • All
  • Comments
  • Work Log
  • History
  • Activity
Hide
Permalink
Francesco Tinti added a comment - 04/Apr/07 9:58 AM

Hi
I use maven 2.1 this is myconfiguration for dbunit plugin
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>dbunit-maven-plugin</artifactId>

<!--jar file that has the jdbc driver -->
<dependencies>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.0.5</version>
</dependency>
</dependencies>

<!-- common configurations -->
<configuration>
<driver>org.gjt.mm.mysql.Driver</driver>
<url>jdbc:mysql://localhost:3306/mydb
</url>
<format>xml</format>
<username>myusername</username>
<password>mypassword</password>
<src>insert.xml</src>
</configuration>
<executions>
<execution>
<phase>compile</phase>
<goals>
<goal>operation</goal>
</goals>
<configuration>
<type>CLEAN_INSERT</type>
</configuration>
</execution>
</executions>
</plugin>

This is the error stack trace:
[INFO] ------------------------------------------------------------------------
[INFO] Error executing database operation: CLEAN_INSERT

[INFO] ------------------------------------------------------------------------
[INFO] Trace
org.apache.maven.lifecycle.LifecycleExecutionException: Error executing database
operation: CLEAN_INSERT
at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(Defa
ultLifecycleExecutor.java:521)
at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalWithLi
fecycle(DefaultLifecycleExecutor.java:437)
at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoal(Defau
ltLifecycleExecutor.java:416)
at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalAndHan
dleFailures(DefaultLifecycleExecutor.java:268)
at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeTaskSegmen
ts(DefaultLifecycleExecutor.java:235)
at org.apache.maven.lifecycle.DefaultLifecycleExecutor.execute(DefaultLi
fecycleExecutor.java:143)
at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:300)
at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:120)
at org.apache.maven.embedder.MavenEmbedder.execute(MavenEmbedder.java:68
1)
at org.apache.maven.cli.MavenCli.main(MavenCli.java:343)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.
java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
sorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Laun
cher.java:289)
at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.jav
a:229)
at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(La
uncher.java:408)
at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:
351)
Caused by: org.apache.maven.plugin.MojoExecutionException: Error executing datab
ase operation: CLEAN_INSERT
at org.codehaus.mojo.dbunit.OperationMojo.execute(OperationMojo.java:110
)
at org.apache.maven.plugin.DefaultPluginManager.executeMojo(DefaultPlugi
nManager.java:618)
at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(Defa
ultLifecycleExecutor.java:496)
... 17 more
Caused by: java.lang.NullPointerException
at org.dbunit.dataset.xml.XmlProducer.endElement(XmlProducer.java:246)
at org.apache.xerces.parsers.AbstractSAXParser.endElement(Unknown Source
)
at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanEndElement(
Unknown Source)
at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContent
Dispatcher.dispatch(Unknown Source)
at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Un
known Source)
at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source)
at org.dbunit.dataset.xml.XmlProducer.produce(XmlProducer.java:112)
at org.dbunit.dataset.CachedDataSet.<init>(CachedDataSet.java:71)
at org.dbunit.ant.AbstractStep.getSrcDataSet(AbstractStep.java:148)
at org.dbunit.ant.Operation.execute(Operation.java:182)
at org.codehaus.mojo.dbunit.OperationMojo.execute(OperationMojo.java:101
)
... 19 more

Show
Francesco Tinti added a comment - 04/Apr/07 9:58 AM Hi I use maven 2.1 this is myconfiguration for dbunit plugin <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>dbunit-maven-plugin</artifactId> <!--jar file that has the jdbc driver --> <dependencies> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.0.5</version> </dependency> </dependencies> <!-- common configurations --> <configuration> <driver>org.gjt.mm.mysql.Driver</driver> <url>jdbc:mysql://localhost:3306/mydb </url> <format>xml</format> <username>myusername</username> <password>mypassword</password> <src>insert.xml</src> </configuration> <executions> <execution> <phase>compile</phase> <goals> <goal>operation</goal> </goals> <configuration> <type>CLEAN_INSERT</type> </configuration> </execution> </executions> </plugin> This is the error stack trace: [INFO] ------------------------------------------------------------------------ [INFO] Error executing database operation: CLEAN_INSERT [INFO] ------------------------------------------------------------------------ [INFO] Trace org.apache.maven.lifecycle.LifecycleExecutionException: Error executing database operation: CLEAN_INSERT at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(Defa ultLifecycleExecutor.java:521) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalWithLi fecycle(DefaultLifecycleExecutor.java:437) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoal(Defau ltLifecycleExecutor.java:416) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalAndHan dleFailures(DefaultLifecycleExecutor.java:268) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeTaskSegmen ts(DefaultLifecycleExecutor.java:235) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.execute(DefaultLi fecycleExecutor.java:143) at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:300) at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:120) at org.apache.maven.embedder.MavenEmbedder.execute(MavenEmbedder.java:68 1) at org.apache.maven.cli.MavenCli.main(MavenCli.java:343) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl. java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces sorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Laun cher.java:289) at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.jav a:229) at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(La uncher.java:408) at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java: 351) Caused by: org.apache.maven.plugin.MojoExecutionException: Error executing datab ase operation: CLEAN_INSERT at org.codehaus.mojo.dbunit.OperationMojo.execute(OperationMojo.java:110 ) at org.apache.maven.plugin.DefaultPluginManager.executeMojo(DefaultPlugi nManager.java:618) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(Defa ultLifecycleExecutor.java:496) ... 17 more Caused by: java.lang.NullPointerException at org.dbunit.dataset.xml.XmlProducer.endElement(XmlProducer.java:246) at org.apache.xerces.parsers.AbstractSAXParser.endElement(Unknown Source ) at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanEndElement( Unknown Source) at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContent Dispatcher.dispatch(Unknown Source) at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Un known Source) at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source) at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source) at org.apache.xerces.parsers.XMLParser.parse(Unknown Source) at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source) at org.dbunit.dataset.xml.XmlProducer.produce(XmlProducer.java:112) at org.dbunit.dataset.CachedDataSet.<init>(CachedDataSet.java:71) at org.dbunit.ant.AbstractStep.getSrcDataSet(AbstractStep.java:148) at org.dbunit.ant.Operation.execute(Operation.java:182) at org.codehaus.mojo.dbunit.OperationMojo.execute(OperationMojo.java:101 ) ... 19 more
Hide
Permalink
Kristian Koehler added a comment - 23/Mar/10 5:21 AM

Hi

the attached file contains a patch for Shutdown functionality. I added a ShutdownHandler interface which can be used to shutdown databases. I also implemented two implementations: DefaultShutdownHandler and DerbyShutdownHandler.

It can be configured via configuration element:

– 8< –

<executions>
...
<configuration
<shutdownHandlerName>org.codehaus.mojo.dbunit.shutdown.DerbyShutdownHandler</shutdownHandlerName>
</configuration>
</executions>

– 8< –

The Deafult Impl does nothing.

Kristian

Show
Kristian Koehler added a comment - 23/Mar/10 5:21 AM Hi the attached file contains a patch for Shutdown functionality. I added a ShutdownHandler interface which can be used to shutdown databases. I also implemented two implementations: DefaultShutdownHandler and DerbyShutdownHandler. It can be configured via configuration element: – 8< – <executions> ... <configuration <shutdownHandlerName>org.codehaus.mojo.dbunit.shutdown.DerbyShutdownHandler</shutdownHandlerName> </configuration> </executions> – 8< – The Deafult Impl does nothing. Kristian

People

  • Assignee:
    Unassigned
    Reporter:
    Matt Raible
Vote (0)
Watch (0)

Dates

  • Created:
    05/Mar/07 7:44 AM
    Updated:
    23/Mar/10 5:21 AM
  • Atlassian JIRA (v5.0.4#731-sha1:3aa7374)
  • Report a problem
  • Powered by a free Atlassian JIRA open source license for Codehaus. Try JIRA - bug tracking software for your team.