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