package org.infinispan.test.integration.as.testframework; import java.sql.SQLException; import org.h2.tools.Server; import org.jboss.arquillian.container.spi.event.container.AfterStop; import org.jboss.arquillian.container.spi.event.container.BeforeStart; import org.jboss.arquillian.core.api.annotation.Observes; public class H2DatabaseLifecycleManager { private int startedContainers = 0; private Server tcpServer; public synchronized void startDatabase(@Observes BeforeStart event) { if (startedContainers==0) { try { tcpServer = Server.createTcpServer(); tcpServer.start(); System.out.println("H2 database started in TCP server mode"); } catch (SQLException e) { e.printStackTrace(); } startedContainers++; } } public synchronized void stopDatabase(@Observes AfterStop event) { startedContainers--; if (startedContainers==0 && tcpServer!=null) { tcpServer.stop(); System.out.println("H2 database was shut down"); tcpServer = null; } } }