Seam, JBoss embedded and Maven2
gjeudy Nov 3, 2008 10:52 PMHi,
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 -> Dependency{Required State:Actual State}
UserTransactionBinding
-> UserTransaction{Configured:**ERROR**}
UserTransactionBinding2
-> UserTransaction{Configured:**ERROR**}
jboss.jca:name=DefaultDS,service=DataSourceBinding
-> jboss.jca:name=DefaultDS,service=LocalTxCM{Create:Configured}
-> jboss.jca:name=DefaultDS,service=LocalTxCM{Start:Configured}
jboss.jca:name=DefaultDS,service=LocalTxCM
-> jboss.security:service=JaasSecurityManager{Start:** NOT FOUND **}
-> jboss.jca:service=CachedConnectionManager{Create:** NOT FOUND **}
-> jboss.security:service=JaasSecurityManager{Create:** NOT FOUND **}
-> jboss:service=TransactionManager{Create:** NOT FOUND **}
-> jboss.jca:service=CachedConnectionManager{Start:** NOT FOUND **}
-> jboss.jca:name=DefaultDS,service=ManagedConnectionPool{Create:Configured}
-> jboss.jca:name=DefaultDS,service=ManagedConnectionPool{Start:Configured}
-> jboss:service=TransactionManager{Start:** NOT FOUND **}
jboss.jca:name=DefaultDS,service=ManagedConnectionFactory
-> jboss.jca:name='jboss-local-jdbc.rar',service=RARDeployment{Start:** NOT FOUND **}
-> jboss.jca:name='jboss-local-jdbc.rar',service=RARDeployment{Create:** NOT FOUND **}
jboss.jca:name=DefaultDS,service=ManagedConnectionPool
-> jboss.jca:name=DefaultDS,service=ManagedConnectionFactory{Create:Configured}
-> jboss.jca:name=DefaultDS,service=ManagedConnectionFactory{Start:Configured}
jboss.messaging.connectionfactory:service=ClusterPullConnectionFactory
-> jboss.messaging:service=ServerPeer{Start:Configured}
-> jboss.messaging:service=ServerPeer{Create:Configured}
-> jboss.messaging:service=PostOffice{Create:Configured}
-> jboss.messaging:service=PostOffice{Start:Configured}
jboss.messaging.connectionfactory:service=ClusteredConnectionFactory
-> jboss.messaging:service=ServerPeer{Create:Configured}
-> jboss.messaging:service=PostOffice{Create:Configured}
-> jboss.messaging:service=PostOffice{Start:Configured}
-> jboss.messaging:service=ServerPeer{Start:Configured}
jboss.messaging.connectionfactory:service=ConnectionFactory
-> jboss.messaging:service=PostOffice{Create:Configured}
-> jboss.messaging:service=ServerPeer{Create:Configured}
-> jboss.messaging:service=ServerPeer{Start:Configured}
-> jboss.messaging:service=PostOffice{Start:Configured}
jboss.messaging.destination:name=DLQ,service=Queue
-> jboss.messaging:service=ServerPeer{Start:Configured}
-> jboss.messaging:service=ServerPeer{Create:Configured}
-> jboss.messaging:service=PostOffice{Create:Configured}
-> jboss.messaging:service=PostOffice{Start:Configured}
jboss.messaging.destination:name=ExpiryQueue,service=Queue
-> jboss.messaging:service=ServerPeer{Create:Configured}
-> jboss.messaging:service=PostOffice{Create:Configured}
-> jboss.messaging:service=ServerPeer{Start:Configured}
-> jboss.messaging:service=PostOffice{Start:Configured}
jboss.messaging:service=JMSUserManager
-> jboss.jca:name=DefaultDS,service=DataSourceBinding{Create:Configured}
-> jboss:service=TransactionManager{Start:** NOT FOUND **}
-> jboss:service=TransactionManager{Create:** NOT FOUND **}
-> jboss.jca:name=DefaultDS,service=DataSourceBinding{Start:Configured}
jboss.messaging:service=PersistenceManager
-> jboss:service=TransactionManager{Start:** NOT FOUND **}
-> jboss.jca:name=DefaultDS,service=DataSourceBinding{Create:Configured}
-> jboss.jca:name=DefaultDS,service=DataSourceBinding{Start:Configured}
-> jboss:service=TransactionManager{Create:** NOT FOUND **}
jboss.messaging:service=PostOffice
-> jboss.messaging:service=ServerPeer{Start:Configured}
-> jboss.messaging:service=ServerPeer{Create:Configured}
-> jboss:service=TransactionManager{Create:** NOT FOUND **}
-> jboss.jca:name=DefaultDS,service=DataSourceBinding{Create:Configured}
-> jboss.jca:name=DefaultDS,service=DataSourceBinding{Start:Configured}
-> jboss:service=TransactionManager{Start:** NOT FOUND **}
jboss.messaging:service=ServerPeer
-> jboss.messaging:service=JMSUserManager{Start:Configured}
-> jboss.messaging:service=PersistenceManager{Create:Configured}
-> jboss.messaging:service=JMSUserManager{Create:Configured}
-> jboss.messaging:service=PersistenceManager{Start:Configured}
jboss.mq:service=DestinationManager
-> jboss.messaging:service=ServerPeer{Start:Configured}
-> jboss.messaging:service=ServerPeer{Create:Configured}
*** CONTEXTS IN ERROR: Name -> Error
JNDIKernelRegistryPlugin -> javax.naming.NamingException: The protocol 'localhost' is not available within carol.
jboss.jca:service=CachedConnectionManager -> ** NOT FOUND **
vfsfile:/C:/gjeudy/workspace/rdm/rdm-service/target/test-classes/bootstrap/conf/jboss-service.xml -> javax.naming.NamingException: The protocol 'localhost' is not available within carol.
vfsfile:/C:/gjeudy/workspace/rdm/rdm-service/target/test-classes/bootstrap/deploy/jboss-local-jdbc.rar -> javax.naming.NamingException: The protocol 'localhost' is not available within carol.
vfsfile:/C:/gjeudy/workspace/rdm/rdm-service/target/test-classes/bootstrap/deploy/jms-ra.rar -> javax.naming.NamingException: The protocol 'localhost' is not available within carol.
vfsfile:/C:/gjeudy/workspace/rdm/rdm-service/target/test-classes/bootstrap/deploy/messaging/jms-ds.xml -> javax.naming.NamingException: The protocol 'localhost' is not available within carol.
vfsfile:/C:/gjeudy/workspace/rdm/rdm-service/target/test-classes/bootstrap/deploy/jboss-xa-jdbc.rar -> javax.naming.NamingException: The protocol 'localhost' is not available within carol.
UserTransaction -> javax.naming.NamingException: The protocol 'localhost' is not available within carol.
jboss.jca:name='jboss-local-jdbc.rar',service=RARDeployment -> ** NOT FOUND **
java:comp/Initializer -> javax.naming.NamingException: The protocol 'localhost' is not available within carol.
java:comp -> javax.naming.NamingException: The protocol 'localhost' is not available within carol.
jboss:service=TransactionManager -> ** NOT FOUND **
jboss.security:service=JaasSecurityManager -> ** NOT FOUND **
">org.jboss.deployers.client.spi.IncompleteDeploymentException: Summary of incomplete deployments (SEE PREVIOUS ERRORS FOR DETAILS):
*** CONTEXTS MISSING DEPENDENCIES: Name -> Dependency{Required State:Actual State}
UserTransactionBinding
-> UserTransaction{Configured:**ERROR**}
UserTransactionBinding2
-> UserTransaction{Configured:**ERROR**}
jboss.jca:name=DefaultDS,service=DataSourceBinding
-> jboss.jca:name=DefaultDS,service=LocalTxCM{Create:Configured}
-> jboss.jca:name=DefaultDS,service=LocalTxCM{Start:Configured}
jboss.jca:name=DefaultDS,service=LocalTxCM
-> jboss.security:service=JaasSecurityManager{Start:** NOT FOUND **}
-> jboss.jca:service=CachedConnectionManager{Create:** NOT FOUND **}
-> jboss.security:service=JaasSecurityManager{Create:** NOT FOUND **}
-> jboss:service=TransactionManager{Create:** NOT FOUND **}
-> jboss.jca:service=CachedConnectionManager{Start:** NOT FOUND **}
-> jboss.jca:name=DefaultDS,service=ManagedConnectionPool{Create:Configured}
-> jboss.jca:name=DefaultDS,service=ManagedConnectionPool{Start:Configured}
-> jboss:service=TransactionManager{Start:** NOT FOUND **}
jboss.jca:name=DefaultDS,service=ManagedConnectionFactory
-> jboss.jca:name='jboss-local-jdbc.rar',service=RARDeployment{Start:** NOT FOUND **}
-> jboss.jca:name='jboss-local-jdbc.rar',service=RARDeployment{Create:** NOT FOUND **}
jboss.jca:name=DefaultDS,service=ManagedConnectionPool
-> jboss.jca:name=DefaultDS,service=ManagedConnectionFactory{Create:Configured}
-> jboss.jca:name=DefaultDS,service=ManagedConnectionFactory{Start:Configured}
jboss.messaging.connectionfactory:service=ClusterPullConnectionFactory
-> jboss.messaging:service=ServerPeer{Start:Configured}
-> jboss.messaging:service=ServerPeer{Create:Configured}
-> jboss.messaging:service=PostOffice{Create:Configured}
-> jboss.messaging:service=PostOffice{Start:Configured}
jboss.messaging.connectionfactory:service=ClusteredConnectionFactory
-> jboss.messaging:service=ServerPeer{Create:Configured}
-> jboss.messaging:service=PostOffice{Create:Configured}
-> jboss.messaging:service=PostOffice{Start:Configured}
-> jboss.messaging:service=ServerPeer{Start:Configured}
jboss.messaging.connectionfactory:service=ConnectionFactory
-> jboss.messaging:service=PostOffice{Create:Configured}
-> jboss.messaging:service=ServerPeer{Create:Configured}
-> jboss.messaging:service=ServerPeer{Start:Configured}
-> jboss.messaging:service=PostOffice{Start:Configured}
jboss.messaging.destination:name=DLQ,service=Queue
-> jboss.messaging:service=ServerPeer{Start:Configured}
-> jboss.messaging:service=ServerPeer{Create:Configured}
-> jboss.messaging:service=PostOffice{Create:Configured}
-> jboss.messaging:service=PostOffice{Start:Configured}
jboss.messaging.destination:name=ExpiryQueue,service=Queue
-> jboss.messaging:service=ServerPeer{Create:Configured}
-> jboss.messaging:service=PostOffice{Create:Configured}
-> jboss.messaging:service=ServerPeer{Start:Configured}
-> jboss.messaging:service=PostOffice{Start:Configured}
jboss.messaging:service=JMSUserManager
-> jboss.jca:name=DefaultDS,service=DataSourceBinding{Create:Configured}
-> jboss:service=TransactionManager{Start:** NOT FOUND **}
-> jboss:service=TransactionManager{Create:** NOT FOUND **}
-> jboss.jca:name=DefaultDS,service=DataSourceBinding{Start:Configured}
jboss.messaging:service=PersistenceManager
-> jboss:service=TransactionManager{Start:** NOT FOUND **}
-> jboss.jca:name=DefaultDS,service=DataSourceBinding{Create:Configured}
-> jboss.jca:name=DefaultDS,service=DataSourceBinding{Start:Configured}
-> jboss:service=TransactionManager{Create:** NOT FOUND **}
jboss.messaging:service=PostOffice
-> jboss.messaging:service=ServerPeer{Start:Configured}
-> jboss.messaging:service=ServerPeer{Create:Configured}
-> jboss:service=TransactionManager{Create:** NOT FOUND **}
-> jboss.jca:name=DefaultDS,service=DataSourceBinding{Create:Configured}
-> jboss.jca:name=DefaultDS,service=DataSourceBinding{Start:Configured}
-> jboss:service=TransactionManager{Start:** NOT FOUND **}
jboss.messaging:service=ServerPeer
-> jboss.messaging:service=JMSUserManager{Start:Configured}
-> jboss.messaging:service=PersistenceManager{Create:Configured}
-> jboss.messaging:service=JMSUserManager{Create:Configured}
-> jboss.messaging:service=PersistenceManager{Start:Configured}
jboss.mq:service=DestinationManager
-> jboss.messaging:service=ServerPeer{Start:Configured}
-> jboss.messaging:service=ServerPeer{Create:Configured}
*** CONTEXTS IN ERROR: Name -> Error
JNDIKernelRegistryPlugin -> javax.naming.NamingException: The protocol 'localhost' is not available within carol.
jboss.jca:service=CachedConnectionManager -> ** NOT FOUND **
vfsfile:/C:/gjeudy/workspace/rdm/rdm-service/target/test-classes/bootstrap/conf/jboss-service.xml -> javax.naming.NamingException: The protocol 'localhost' is not available within carol.
vfsfile:/C:/gjeudy/workspace/rdm/rdm-service/target/test-classes/bootstrap/deploy/jboss-local-jdbc.rar -> javax.naming.NamingException: The protocol 'localhost' is not available within carol.
vfsfile:/C:/gjeudy/workspace/rdm/rdm-service/target/test-classes/bootstrap/deploy/jms-ra.rar -> javax.naming.NamingException: The protocol 'localhost' is not available within carol.
vfsfile:/C:/gjeudy/workspace/rdm/rdm-service/target/test-classes/bootstrap/deploy/messaging/jms-ds.xml -> javax.naming.NamingException: The protocol 'localhost' is not available within carol.
vfsfile:/C:/gjeudy/workspace/rdm/rdm-service/target/test-classes/bootstrap/deploy/jboss-xa-jdbc.rar -> javax.naming.NamingException: The protocol 'localhost' is not available within carol.
UserTransaction -> javax.naming.NamingException: The protocol 'localhost' is not available within carol.
jboss.jca:name='jboss-local-jdbc.rar',service=RARDeployment -> ** NOT FOUND **
java:comp/Initializer -> javax.naming.NamingException: The protocol 'localhost' is not available within carol.
java:comp -> javax.naming.NamingException: The protocol 'localhost' is not available within carol.
jboss:service=TransactionManager -> ** NOT FOUND **
jboss.security:service=JaasSecurityManager -> ** 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...