3 Replies Latest reply on Nov 5, 2008 6:12 PM by matt.nirgue

    Seam, JBoss embedded and Maven2

    gjeudy

      Hi,


      I'm trying to do Seam integration testing with JBoss embedded in Maven2. I read what others managed to achieve in the following JBSEAM-2371


      I'm using Maven 2.0.9, surefire plugin 2.4.2, Seam 2.0.1.GA and jboss embedded beta3. Apparently jboss embedded doesnt start out properly.


      I put the bootstrap dir contents of the seam distribution into a jboss-embedded-bootstrap zip file published on my intranet maven2 repo.


      here's the maven2 config I use:


      <plugin>
                      <artifactId>maven-dependency-plugin</artifactId>
                      <executions>
                          <execution>
                              <configuration>
                                  <artifactItems>
                                      <artifactItem>
                                          <groupId>org.jboss.embedded</groupId>
                                          <artifactId>jboss-embedded-bootstrap</artifactId>
                                          <type>zip</type>
                                          <version>beta3</version>
                                      </artifactItem>
                                  </artifactItems>
                                  <outputDirectory>${project.build.testOutputDirectory}</outputDirectory>
                              </configuration>
                              <id>download-embedded-jboss-bootstrap</id>
                              <phase>process-test-resources</phase>
                              <goals>
                                  <goal>unpack</goal>
                              </goals>
                          </execution>
                          <execution>
                              <configuration>
                                  <artifactItems>
                                      <artifactItem>
                                          <groupId>javax.xml.bind</groupId>
                                          <artifactId>jaxb-api</artifactId>
                                          <version>2.1</version>
                                      </artifactItem>
                                  </artifactItems>
                                  <outputDirectory>${project.build.testOutputDirectory}/endorsed</outputDirectory>
                              </configuration>
                              <id>download-jaxb-api</id>
                              <phase>process-test-resources</phase>
                              <goals>
                                  <goal>copy</goal>
                              </goals>
                          </execution>
                      </executions>
                  </plugin>
                     <plugin>
                          <groupId>org.apache.maven.plugins</groupId>
                          <artifactId>maven-surefire-plugin</artifactId>
                          <version>2.4.2</version>
                          <configuration>
                          <additionalClasspathElements>
                              <additionalClasspathElement>${project.build.testOutputDirectory}/bootstrap</additionalClasspathElement>
                              <additionalClasspathElement>${basedir}/../rdm-web/src/main/resources</additionalClasspathElement>
                          </additionalClasspathElements>
                          <childDelegation>true</childDelegation>
                          <useSystemClassLoader>true</useSystemClassLoader>
                          <argLine>-Djava.endorsed.dirs=${project.build.testOutputDirectory}/endorsed -Dsun.lang.ClassLoader.allowArraySyntax=true</argLine>
                          </configuration>
                     </plugin>
      <snip><snip>
      <!-- test dependencies -->
                <!-- JBoss EJB3 Microcontainer for testing -->
                <dependency>
                    <groupId>org.jboss.embedded</groupId>
                    <artifactId>hibernate-all</artifactId>
                    <version>beta3</version>
                    <scope>test</scope>
                </dependency>
                <dependency>
                    <groupId>org.jboss.embedded</groupId>
                    <artifactId>jboss-embedded-all</artifactId>
                    <version>beta3</version>
                    <scope>test</scope>
                </dependency>
                <dependency>
                    <groupId>org.jboss.embedded</groupId>
                    <artifactId>thirdparty-all</artifactId>
                    <version>beta3</version>
                    <scope>test</scope>
                </dependency>
                <!-- JBoss EJB3 Microcontainer for testing end -->
                <dependency>
                     <groupId>javax.el</groupId>
                     <artifactId>el-api</artifactId>
                     <version>1.0</version>
                     <scope>test</scope>
                </dependency>
                <dependency>
                     <groupId>jboss</groupId>
                     <artifactId>jboss-common</artifactId>
                     <scope>test</scope>
                </dependency>
                <!--  end test dependencies -->




      here's the stacktrace I get. No idea what could be wrong, I checked out the surefire.test.class.path and hibernate-all-beta3.jar, jboss-embedded-all-beta3.jar, thirdparty-all-beta3.jar stand in front of the classpath as others said it should be.


      Summary of incomplete deployments (SEE PREVIOUS ERRORS FOR DETAILS):
      
      *** CONTEXTS MISSING DEPENDENCIES: Name -&gt; Dependency{Required State:Actual State}
      
      UserTransactionBinding
       -&gt; UserTransaction{Configured:**ERROR**}
      
      UserTransactionBinding2
       -&gt; UserTransaction{Configured:**ERROR**}
      
      jboss.jca:name=DefaultDS,service=DataSourceBinding
       -&gt; jboss.jca:name=DefaultDS,service=LocalTxCM{Create:Configured}
       -&gt; jboss.jca:name=DefaultDS,service=LocalTxCM{Start:Configured}
      
      jboss.jca:name=DefaultDS,service=LocalTxCM
       -&gt; jboss.security:service=JaasSecurityManager{Start:** NOT FOUND **}
       -&gt; jboss.jca:service=CachedConnectionManager{Create:** NOT FOUND **}
       -&gt; jboss.security:service=JaasSecurityManager{Create:** NOT FOUND **}
       -&gt; jboss:service=TransactionManager{Create:** NOT FOUND **}
       -&gt; jboss.jca:service=CachedConnectionManager{Start:** NOT FOUND **}
       -&gt; jboss.jca:name=DefaultDS,service=ManagedConnectionPool{Create:Configured}
       -&gt; jboss.jca:name=DefaultDS,service=ManagedConnectionPool{Start:Configured}
       -&gt; jboss:service=TransactionManager{Start:** NOT FOUND **}
      
      jboss.jca:name=DefaultDS,service=ManagedConnectionFactory
       -&gt; jboss.jca:name=&apos;jboss-local-jdbc.rar&apos;,service=RARDeployment{Start:** NOT FOUND **}
       -&gt; jboss.jca:name=&apos;jboss-local-jdbc.rar&apos;,service=RARDeployment{Create:** NOT FOUND **}
      
      jboss.jca:name=DefaultDS,service=ManagedConnectionPool
       -&gt; jboss.jca:name=DefaultDS,service=ManagedConnectionFactory{Create:Configured}
       -&gt; jboss.jca:name=DefaultDS,service=ManagedConnectionFactory{Start:Configured}
      
      jboss.messaging.connectionfactory:service=ClusterPullConnectionFactory
       -&gt; jboss.messaging:service=ServerPeer{Start:Configured}
       -&gt; jboss.messaging:service=ServerPeer{Create:Configured}
       -&gt; jboss.messaging:service=PostOffice{Create:Configured}
       -&gt; jboss.messaging:service=PostOffice{Start:Configured}
      
      jboss.messaging.connectionfactory:service=ClusteredConnectionFactory
       -&gt; jboss.messaging:service=ServerPeer{Create:Configured}
       -&gt; jboss.messaging:service=PostOffice{Create:Configured}
       -&gt; jboss.messaging:service=PostOffice{Start:Configured}
       -&gt; jboss.messaging:service=ServerPeer{Start:Configured}
      
      jboss.messaging.connectionfactory:service=ConnectionFactory
       -&gt; jboss.messaging:service=PostOffice{Create:Configured}
       -&gt; jboss.messaging:service=ServerPeer{Create:Configured}
       -&gt; jboss.messaging:service=ServerPeer{Start:Configured}
       -&gt; jboss.messaging:service=PostOffice{Start:Configured}
      
      jboss.messaging.destination:name=DLQ,service=Queue
       -&gt; jboss.messaging:service=ServerPeer{Start:Configured}
       -&gt; jboss.messaging:service=ServerPeer{Create:Configured}
       -&gt; jboss.messaging:service=PostOffice{Create:Configured}
       -&gt; jboss.messaging:service=PostOffice{Start:Configured}
      
      jboss.messaging.destination:name=ExpiryQueue,service=Queue
       -&gt; jboss.messaging:service=ServerPeer{Create:Configured}
       -&gt; jboss.messaging:service=PostOffice{Create:Configured}
       -&gt; jboss.messaging:service=ServerPeer{Start:Configured}
       -&gt; jboss.messaging:service=PostOffice{Start:Configured}
      
      jboss.messaging:service=JMSUserManager
       -&gt; jboss.jca:name=DefaultDS,service=DataSourceBinding{Create:Configured}
       -&gt; jboss:service=TransactionManager{Start:** NOT FOUND **}
       -&gt; jboss:service=TransactionManager{Create:** NOT FOUND **}
       -&gt; jboss.jca:name=DefaultDS,service=DataSourceBinding{Start:Configured}
      
      jboss.messaging:service=PersistenceManager
       -&gt; jboss:service=TransactionManager{Start:** NOT FOUND **}
       -&gt; jboss.jca:name=DefaultDS,service=DataSourceBinding{Create:Configured}
       -&gt; jboss.jca:name=DefaultDS,service=DataSourceBinding{Start:Configured}
       -&gt; jboss:service=TransactionManager{Create:** NOT FOUND **}
      
      jboss.messaging:service=PostOffice
       -&gt; jboss.messaging:service=ServerPeer{Start:Configured}
       -&gt; jboss.messaging:service=ServerPeer{Create:Configured}
       -&gt; jboss:service=TransactionManager{Create:** NOT FOUND **}
       -&gt; jboss.jca:name=DefaultDS,service=DataSourceBinding{Create:Configured}
       -&gt; jboss.jca:name=DefaultDS,service=DataSourceBinding{Start:Configured}
       -&gt; jboss:service=TransactionManager{Start:** NOT FOUND **}
      
      jboss.messaging:service=ServerPeer
       -&gt; jboss.messaging:service=JMSUserManager{Start:Configured}
       -&gt; jboss.messaging:service=PersistenceManager{Create:Configured}
       -&gt; jboss.messaging:service=JMSUserManager{Create:Configured}
       -&gt; jboss.messaging:service=PersistenceManager{Start:Configured}
      
      jboss.mq:service=DestinationManager
       -&gt; jboss.messaging:service=ServerPeer{Start:Configured}
       -&gt; jboss.messaging:service=ServerPeer{Create:Configured}
      
      
      *** CONTEXTS IN ERROR: Name -&gt; Error
      
      JNDIKernelRegistryPlugin -&gt; javax.naming.NamingException: The protocol &apos;localhost&apos; is not available within carol.
      
      jboss.jca:service=CachedConnectionManager -&gt; ** NOT FOUND **
      
      vfsfile:/C:/gjeudy/workspace/rdm/rdm-service/target/test-classes/bootstrap/conf/jboss-service.xml -&gt; javax.naming.NamingException: The protocol &apos;localhost&apos; is not available within carol.
      
      vfsfile:/C:/gjeudy/workspace/rdm/rdm-service/target/test-classes/bootstrap/deploy/jboss-local-jdbc.rar -&gt; javax.naming.NamingException: The protocol &apos;localhost&apos; is not available within carol.
      
      vfsfile:/C:/gjeudy/workspace/rdm/rdm-service/target/test-classes/bootstrap/deploy/jms-ra.rar -&gt; javax.naming.NamingException: The protocol &apos;localhost&apos; is not available within carol.
      
      vfsfile:/C:/gjeudy/workspace/rdm/rdm-service/target/test-classes/bootstrap/deploy/messaging/jms-ds.xml -&gt; javax.naming.NamingException: The protocol &apos;localhost&apos; is not available within carol.
      
      vfsfile:/C:/gjeudy/workspace/rdm/rdm-service/target/test-classes/bootstrap/deploy/jboss-xa-jdbc.rar -&gt; javax.naming.NamingException: The protocol &apos;localhost&apos; is not available within carol.
      
      UserTransaction -&gt; javax.naming.NamingException: The protocol &apos;localhost&apos; is not available within carol.
      
      jboss.jca:name=&apos;jboss-local-jdbc.rar&apos;,service=RARDeployment -&gt; ** NOT FOUND **
      
      java:comp/Initializer -&gt; javax.naming.NamingException: The protocol &apos;localhost&apos; is not available within carol.
      
      java:comp -&gt; javax.naming.NamingException: The protocol &apos;localhost&apos; is not available within carol.
      
      jboss:service=TransactionManager -&gt; ** NOT FOUND **
      
      jboss.security:service=JaasSecurityManager -&gt; ** NOT FOUND **
      
      ">org.jboss.deployers.client.spi.IncompleteDeploymentException: Summary of incomplete deployments (SEE PREVIOUS ERRORS FOR DETAILS):
      *** CONTEXTS MISSING DEPENDENCIES: Name -&gt; Dependency{Required State:Actual State}
      UserTransactionBinding
       -&gt; UserTransaction{Configured:**ERROR**}
      UserTransactionBinding2
       -&gt; UserTransaction{Configured:**ERROR**}
      jboss.jca:name=DefaultDS,service=DataSourceBinding
       -&gt; jboss.jca:name=DefaultDS,service=LocalTxCM{Create:Configured}
       -&gt; jboss.jca:name=DefaultDS,service=LocalTxCM{Start:Configured}
      jboss.jca:name=DefaultDS,service=LocalTxCM
       -&gt; jboss.security:service=JaasSecurityManager{Start:** NOT FOUND **}
       -&gt; jboss.jca:service=CachedConnectionManager{Create:** NOT FOUND **}
       -&gt; jboss.security:service=JaasSecurityManager{Create:** NOT FOUND **}
       -&gt; jboss:service=TransactionManager{Create:** NOT FOUND **}
       -&gt; jboss.jca:service=CachedConnectionManager{Start:** NOT FOUND **}
       -&gt; jboss.jca:name=DefaultDS,service=ManagedConnectionPool{Create:Configured}
       -&gt; jboss.jca:name=DefaultDS,service=ManagedConnectionPool{Start:Configured}
       -&gt; jboss:service=TransactionManager{Start:** NOT FOUND **}
      jboss.jca:name=DefaultDS,service=ManagedConnectionFactory
       -&gt; jboss.jca:name=&apos;jboss-local-jdbc.rar&apos;,service=RARDeployment{Start:** NOT FOUND **}
       -&gt; jboss.jca:name=&apos;jboss-local-jdbc.rar&apos;,service=RARDeployment{Create:** NOT FOUND **}
      jboss.jca:name=DefaultDS,service=ManagedConnectionPool
       -&gt; jboss.jca:name=DefaultDS,service=ManagedConnectionFactory{Create:Configured}
       -&gt; jboss.jca:name=DefaultDS,service=ManagedConnectionFactory{Start:Configured}
      jboss.messaging.connectionfactory:service=ClusterPullConnectionFactory
       -&gt; jboss.messaging:service=ServerPeer{Start:Configured}
       -&gt; jboss.messaging:service=ServerPeer{Create:Configured}
       -&gt; jboss.messaging:service=PostOffice{Create:Configured}
       -&gt; jboss.messaging:service=PostOffice{Start:Configured}
      jboss.messaging.connectionfactory:service=ClusteredConnectionFactory
       -&gt; jboss.messaging:service=ServerPeer{Create:Configured}
       -&gt; jboss.messaging:service=PostOffice{Create:Configured}
       -&gt; jboss.messaging:service=PostOffice{Start:Configured}
       -&gt; jboss.messaging:service=ServerPeer{Start:Configured}
      jboss.messaging.connectionfactory:service=ConnectionFactory
       -&gt; jboss.messaging:service=PostOffice{Create:Configured}
       -&gt; jboss.messaging:service=ServerPeer{Create:Configured}
       -&gt; jboss.messaging:service=ServerPeer{Start:Configured}
       -&gt; jboss.messaging:service=PostOffice{Start:Configured}
      jboss.messaging.destination:name=DLQ,service=Queue
       -&gt; jboss.messaging:service=ServerPeer{Start:Configured}
       -&gt; jboss.messaging:service=ServerPeer{Create:Configured}
       -&gt; jboss.messaging:service=PostOffice{Create:Configured}
       -&gt; jboss.messaging:service=PostOffice{Start:Configured}
      jboss.messaging.destination:name=ExpiryQueue,service=Queue
       -&gt; jboss.messaging:service=ServerPeer{Create:Configured}
       -&gt; jboss.messaging:service=PostOffice{Create:Configured}
       -&gt; jboss.messaging:service=ServerPeer{Start:Configured}
       -&gt; jboss.messaging:service=PostOffice{Start:Configured}
      jboss.messaging:service=JMSUserManager
       -&gt; jboss.jca:name=DefaultDS,service=DataSourceBinding{Create:Configured}
       -&gt; jboss:service=TransactionManager{Start:** NOT FOUND **}
       -&gt; jboss:service=TransactionManager{Create:** NOT FOUND **}
       -&gt; jboss.jca:name=DefaultDS,service=DataSourceBinding{Start:Configured}
      jboss.messaging:service=PersistenceManager
       -&gt; jboss:service=TransactionManager{Start:** NOT FOUND **}
       -&gt; jboss.jca:name=DefaultDS,service=DataSourceBinding{Create:Configured}
       -&gt; jboss.jca:name=DefaultDS,service=DataSourceBinding{Start:Configured}
       -&gt; jboss:service=TransactionManager{Create:** NOT FOUND **}
      jboss.messaging:service=PostOffice
       -&gt; jboss.messaging:service=ServerPeer{Start:Configured}
       -&gt; jboss.messaging:service=ServerPeer{Create:Configured}
       -&gt; jboss:service=TransactionManager{Create:** NOT FOUND **}
       -&gt; jboss.jca:name=DefaultDS,service=DataSourceBinding{Create:Configured}
       -&gt; jboss.jca:name=DefaultDS,service=DataSourceBinding{Start:Configured}
       -&gt; jboss:service=TransactionManager{Start:** NOT FOUND **}
      jboss.messaging:service=ServerPeer
       -&gt; jboss.messaging:service=JMSUserManager{Start:Configured}
       -&gt; jboss.messaging:service=PersistenceManager{Create:Configured}
       -&gt; jboss.messaging:service=JMSUserManager{Create:Configured}
       -&gt; jboss.messaging:service=PersistenceManager{Start:Configured}
      jboss.mq:service=DestinationManager
       -&gt; jboss.messaging:service=ServerPeer{Start:Configured}
       -&gt; jboss.messaging:service=ServerPeer{Create:Configured}
      *** CONTEXTS IN ERROR: Name -&gt; Error
      JNDIKernelRegistryPlugin -&gt; javax.naming.NamingException: The protocol &apos;localhost&apos; is not available within carol.
      jboss.jca:service=CachedConnectionManager -&gt; ** NOT FOUND **
      vfsfile:/C:/gjeudy/workspace/rdm/rdm-service/target/test-classes/bootstrap/conf/jboss-service.xml -&gt; javax.naming.NamingException: The protocol &apos;localhost&apos; is not available within carol.
      vfsfile:/C:/gjeudy/workspace/rdm/rdm-service/target/test-classes/bootstrap/deploy/jboss-local-jdbc.rar -&gt; javax.naming.NamingException: The protocol &apos;localhost&apos; is not available within carol.
      vfsfile:/C:/gjeudy/workspace/rdm/rdm-service/target/test-classes/bootstrap/deploy/jms-ra.rar -&gt; javax.naming.NamingException: The protocol &apos;localhost&apos; is not available within carol.
      vfsfile:/C:/gjeudy/workspace/rdm/rdm-service/target/test-classes/bootstrap/deploy/messaging/jms-ds.xml -&gt; javax.naming.NamingException: The protocol &apos;localhost&apos; is not available within carol.
      vfsfile:/C:/gjeudy/workspace/rdm/rdm-service/target/test-classes/bootstrap/deploy/jboss-xa-jdbc.rar -&gt; javax.naming.NamingException: The protocol &apos;localhost&apos; is not available within carol.
      UserTransaction -&gt; javax.naming.NamingException: The protocol &apos;localhost&apos; is not available within carol.
      jboss.jca:name=&apos;jboss-local-jdbc.rar&apos;,service=RARDeployment -&gt; ** NOT FOUND **
      java:comp/Initializer -&gt; javax.naming.NamingException: The protocol &apos;localhost&apos; is not available within carol.
      java:comp -&gt; javax.naming.NamingException: The protocol &apos;localhost&apos; is not available within carol.
      jboss:service=TransactionManager -&gt; ** NOT FOUND **
      jboss.security:service=JaasSecurityManager -&gt; ** NOT FOUND **
      
           at org.jboss.deployers.plugins.deployers.DeployersImpl.checkComplete(DeployersImpl.java:576)
           at org.jboss.deployers.plugins.main.MainDeployerImpl.checkComplete(MainDeployerImpl.java:559)
           at org.jboss.embedded.Bootstrap.bootstrapURL(Bootstrap.java:149)
           at org.jboss.embedded.Bootstrap.bootstrap(Bootstrap.java:183)
           at org.jboss.embedded.Bootstrap.bootstrap(Bootstrap.java:195)
           at org.jboss.seam.mock.EmbeddedBootstrap.startAndDeployResources(EmbeddedBootstrap.java:11)
           at org.jboss.seam.mock.BaseSeamTest.startJbossEmbeddedIfNecessary(BaseSeamTest.java:1041)
           at org.jboss.seam.mock.BaseSeamTest.startSeam(BaseSeamTest.java:935)
           at org.jboss.seam.mock.BaseSeamTest.init(BaseSeamTest.java:923)
           at org.jboss.seam.mock.SeamTest.init(SeamTest.java:42)
           at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
           at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
           at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
           at java.lang.reflect.Method.invoke(Method.java:585)
           at org.testng.internal.MethodHelper.invokeMethod(MethodHelper.java:580)
           at org.testng.internal.Invoker.invokeConfigurationMethod(Invoker.java:398)
           at org.testng.internal.Invoker.invokeConfigurations(Invoker.java:145)
           at org.testng.internal.Invoker.invokeConfigurations(Invoker.java:82)
           at org.testng.internal.TestMethodWorker.invokeBeforeClassMethods(TestMethodWorker.java:166)
           at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:103)
           at org.testng.TestRunner.runWorkers(TestRunner.java:689)
           at org.testng.TestRunner.privateRun(TestRunner.java:566)
           at org.testng.TestRunner.run(TestRunner.java:466)
           at org.testng.SuiteRunner.runTest(SuiteRunner.java:301)
           at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:296)
           at org.testng.SuiteRunner.privateRun(SuiteRunner.java:276)
           at org.testng.SuiteRunner.run(SuiteRunner.java:191)
           at org.testng.TestNG.createAndRunSuiteRunners(TestNG.java:808)
           at org.testng.TestNG.runSuitesLocally(TestNG.java:776)
           at org.testng.TestNG.run(TestNG.java:701)
           at org.apache.maven.surefire.testng.TestNGExecutor.run(TestNGExecutor.java:62)
           at org.apache.maven.surefire.testng.TestNGDirectoryTestSuite.execute(TestNGDirectoryTestSuite.java:141)
           at org.apache.maven.surefire.Surefire.run(Surefire.java:177)
           at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
           at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
           at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
           at java.lang.reflect.Method.invoke(Method.java:585)
           at org.apache.maven.surefire.booter.SurefireBooter.runSuitesInProcess(SurefireBooter.java:338)
           at org.apache.maven.surefire.booter.SurefireBooter.main(SurefireBooter.java:997)



      Any advice appreciated, this really seems like a jboss embedded loading issue...

        • 1. Re: Seam, JBoss embedded and Maven2
          gjeudy

          I'm not sure what was wrong but I think I had another version of the carol library in my test classpath. I completely cleaned up the classpath and only kept jboss-embedded-all, thirdparty-all and hibernate-all. The embedded container now seems to start fine but I'm unable use a JNDI datasource from my seam component under test.


          I assume I need to deploy my datasource-ds.xml in the jboss embedded deploy directory ? I don't plan to use the real dev database for that. How others have tackled this? Anyone used something like HSQLDB with dbunit combined with SeamTest ?

          • 2. Re: Seam, JBoss embedded and Maven2
            dan.j.allen

            Before you try anything else, make your test dependencies (specifically the *-all.jar) the first dependencies in the list (under <dependencies>). I have discovered that Maven adds dependencies to the classpath in the order they are listed and it is imperative that the JBoss Embedded JARs be listed first.

            • 3. Re: Seam, JBoss embedded and Maven2
              matt.nirgue

              Even though my application normally runs with MySQL, I use HSQLDB for my integration test and it works just fine. As you said, all you need to do is deploy your whatever-ds.xml in the bootstrap directory and that's it...