yes i had the seam chapter 37 but im not sure its clear enough on what exactly you need to do
so - i had alreaddy included the jar files it suggests. The only problem with the list is that if i nclude the lib/jboss-seam.jar i get an error about duplicate registration so i removed it again.
so, i dont want to test the UI interaction yet just the component element (my ejb project stuff first).
I have done the basic pojo tests.
when i try and run an integration test on my NodeHome()
thats where i have been getting the problems shown above.
I had a look in the seam examples code but it doesnt show the configuration of all the elements - and its not useing jboss tools project layouts - and i am using jboss tools as the dev GUI.
i tried one other option - i manually get a transaction from the seam transaction class as follows
package org.domain.forsterslist.session;
import org.domain.forsterslist.entity.Node;
import org.jboss.seam.mock.SeamTest;
import org.testng.annotations.Test;
public class NodeHomeTest extends SeamTest
{
NodeHome nodeHome;
@Test
public void createNode () throws Exception
{
new ComponentTest()
{
@Override
protected void testComponents() throws Exception
{
org.jboss.seam.transaction.Transaction tx = new org.jboss.seam.transaction.Transaction();
tx.getTransaction().begin();
nodeHome = new NodeHome ();
assert nodeHome.isIdDefined() == false;
//trigger new create
Node myNode = nodeHome.getInstance();
assert myNode != null;
assert nodeHome.isManaged() == false;
myNode.setName("will's node");
nodeHome.persist();
assert nodeHome.getId() != null;
assert nodeHome.isManaged() == true;
tx.instance().commit();
}
}.run();
}
}
however when i run this i get a different error (but at least it tried to run the insert this time
[Parser] Running:
C:\Users\will\AppData\Local\Temp\testng-eclipse\testng-customsuite.xml
WARN [org.jboss.seam.security.permission.PersistentPermissionResolver] no permission store available - please install a PermissionStore with the name 'org.jboss.seam.security.jpaPermissionStore' if persistent permissions are required.
Hibernate:
insert
into
Node
(name, version)
values
(?, ?)
FAILED: createNode
java.lang.NullPointerException
at org.jboss.seam.framework.Controller.debug(Controller.java:197)
at org.jboss.seam.framework.Home.createdMessage(Home.java:90)
at org.jboss.seam.framework.EntityHome.persist(EntityHome.java:87)
at org.domain.forsterslist.session.NodeHomeTest$1.testComponents(NodeHomeTest.java:34)
at org.jboss.seam.mock.AbstractSeamTest$ComponentTest.run(AbstractSeamTest.java:162)
at org.domain.forsterslist.session.NodeHomeTest.createNode(NodeHomeTest.java:41)
... Removed 22 stack frames
===============================================
org.domain.forsterslist.session.NodeHomeTest
Tests run: 1, Failures: 1, Skips: 0
===============================================
ERROR [org.hibernate.tool.hbm2ddl.SchemaExport] schema export unsuccessful
java.sql.SQLException: You cannot set autocommit during a managed transaction!
at org.jboss.resource.adapter.jdbc.BaseWrapperManagedConnection.setJdbcAutoCommit(BaseWrapperManagedConnection.java:549)
at org.jboss.resource.adapter.jdbc.WrappedConnection.setAutoCommit(WrappedConnection.java:328)
at org.hibernate.tool.hbm2ddl.SuppliedConnectionProviderConnectionHelper.prepare(SuppliedConnectionProviderConnectionHelper.java:60)
at org.hibernate.tool.hbm2ddl.SchemaExport.execute(SchemaExport.java:252)
at org.hibernate.tool.hbm2ddl.SchemaExport.drop(SchemaExport.java:221)
at org.hibernate.impl.SessionFactoryImpl.close(SessionFactoryImpl.java:839)
at org.hibernate.ejb.EntityManagerFactoryImpl.close(EntityManagerFactoryImpl.java:46)
at org.jboss.seam.persistence.EntityManagerFactory.shutdown(EntityManagerFactory.java:58)
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:597)
at org.jboss.seam.util.Reflections.invoke(Reflections.java:22)
at org.jboss.seam.util.Reflections.invokeAndWrap(Reflections.java:144)
at org.jboss.seam.Component.callComponentMethod(Component.java:2249)
at org.jboss.seam.Component.callDestroyMethod(Component.java:2180)
at org.jboss.seam.Component.destroy(Component.java:1469)
at org.jboss.seam.contexts.Contexts.destroy(Contexts.java:251)
at org.jboss.seam.contexts.Lifecycle.endApplication(Lifecycle.java:61)
at org.jboss.seam.contexts.ServletLifecycle.endApplication(ServletLifecycle.java:149)
at org.jboss.seam.contexts.ServletLifecycle.endApplication(ServletLifecycle.java:144)
at org.jboss.seam.mock.AbstractSeamTest.stopSeam(AbstractSeamTest.java:938)
at org.jboss.seam.mock.SeamTest.stopSeam(SeamTest.java:65)
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:597)
at org.testng.internal.MethodHelper.invokeMethod(MethodHelper.java:607)
at org.testng.internal.Invoker.invokeConfigurationMethod(Invoker.java:417)
at org.testng.internal.Invoker.invokeConfigurations(Invoker.java:154)
at org.testng.internal.Invoker.invokeConfigurations(Invoker.java:88)
at org.testng.SuiteRunner.privateRun(SuiteRunner.java:316)
at org.testng.SuiteRunner.run(SuiteRunner.java:204)
at org.testng.TestNG.createAndRunSuiteRunners(TestNG.java:877)
at org.testng.TestNG.runSuitesLocally(TestNG.java:842)
at org.testng.TestNG.run(TestNG.java:751)
at org.testng.remote.RemoteTestNG.run(RemoteTestNG.java:73)
at org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:124)
===============================================
forstersList-test
Total tests run: 1, Failures: 1, Skips: 0
===============================================
I'll go back and try adding jboss-seam back in the class path again and see if i still get the same errors.
heres the test again (i removed the tx call for this
package org.domain.forsterslist.session;
import org.domain.forsterslist.entity.Node;
import org.jboss.seam.mock.SeamTest;
import org.testng.annotations.Test;
public class NodeHomeTest extends SeamTest
{
NodeHome nodeHome;
@Test
public void createNode () throws Exception
{
new ComponentTest()
{
@Override
protected void testComponents() throws Exception
{
/*
org.jboss.seam.transaction.Transaction tx = new org.jboss.seam.transaction.Transaction();
tx.getTransaction().begin(); */
nodeHome = new NodeHome ();
assert nodeHome.isIdDefined() == false;
//trigger new create
Node myNode = nodeHome.getInstance();
assert myNode != null;
assert nodeHome.isManaged() == false;
myNode.setName("will's node");
nodeHome.persist();
assert nodeHome.getId() != null;
assert nodeHome.isManaged() == true;
/* tx.instance().commit(); */
}
}.run();
}
}
have included jboss-seam jar and the error when i run is - this clashes somewhere on the timer service - but i'm not sure where this would be loaded in embedded jboss before it tryes to run the jboss-seam jar for me.
[Parser] Running:
C:\Users\will\AppData\Local\Temp\testng-eclipse\testng-customsuite.xml
ERROR [org.jboss.kernel.plugins.dependency.AbstractKernelController] Error installing to Real: name=vfsjar:file:/C:/Users/will/eclipseWorkspace/forstersList-test/lib/jboss-seam.jar!/ state=PostClassLoader mode=Manual requiredState=Real
org.jboss.deployers.spi.DeploymentException: Error deploying jboss-seam.jar: Error creating ejb container TimerServiceDispatcher: Container jboss.j2ee:jar=jboss-seam.jar,name=TimerServiceDispatcher,service=EJB3,VMID=4e3bfafb605e4946:4b61221b:127dec51249:-8000 + is already registered
at org.jboss.ejb3.deployers.Ejb3Deployer.deploy(Ejb3Deployer.java:158)
at org.jboss.ejb3.deployers.Ejb3Deployer.deploy(Ejb3Deployer.java:88)
at org.jboss.deployers.vfs.spi.deployer.AbstractVFSRealDeployer.internalDeploy(AbstractVFSRealDeployer.java:45)
at org.jboss.deployers.spi.deployer.helpers.AbstractRealDeployer.deploy(AbstractRealDeployer.java:50)
at org.jboss.deployers.plugins.deployers.DeployerWrapper.deploy(DeployerWrapper.java:169)
at org.jboss.deployers.plugins.deployers.DeployersImpl.doInstallParentFirst(DeployersImpl.java:853)
at org.jboss.deployers.plugins.deployers.DeployersImpl.install(DeployersImpl.java:794)
at org.jboss.dependency.plugins.AbstractControllerContext.install(AbstractControllerContext.java:327)
at org.jboss.dependency.plugins.AbstractController.install(AbstractController.java:1309)
at org.jboss.dependency.plugins.AbstractController.incrementState(AbstractController.java:734)
at org.jboss.dependency.plugins.AbstractController.resolveContexts(AbstractController.java:862)
at org.jboss.dependency.plugins.AbstractController.resolveContexts(AbstractController.java:784)
at org.jboss.dependency.plugins.AbstractController.change(AbstractController.java:622)
at org.jboss.dependency.plugins.AbstractController.change(AbstractController.java:411)
at org.jboss.deployers.plugins.deployers.DeployersImpl.process(DeployersImpl.java:498)
at org.jboss.deployers.plugins.main.MainDeployerImpl.process(MainDeployerImpl.java:506)
at org.jboss.embedded.DeploymentGroup.process(DeploymentGroup.java:127)
at org.jboss.embedded.Bootstrap.deployResourceBases(Bootstrap.java:289)
at org.jboss.seam.mock.EmbeddedBootstrap.startAndDeployResources(EmbeddedBootstrap.java:19)
at org.jboss.seam.mock.AbstractSeamTest.startJbossEmbeddedIfNecessary(AbstractSeamTest.java:1024)
at org.jboss.seam.mock.AbstractSeamTest.startSeam(AbstractSeamTest.java:915)
at org.jboss.seam.mock.SeamTest.startSeam(SeamTest.java:58)
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:597)
at org.testng.internal.MethodHelper.invokeMethod(MethodHelper.java:607)
at org.testng.internal.Invoker.invokeConfigurationMethod(Invoker.java:417)
at org.testng.internal.Invoker.invokeConfigurations(Invoker.java:154)
at org.testng.internal.Invoker.invokeConfigurations(Invoker.java:88)
at org.testng.SuiteRunner.privateRun(SuiteRunner.java:284)
at org.testng.SuiteRunner.run(SuiteRunner.java:204)
at org.testng.TestNG.createAndRunSuiteRunners(TestNG.java:877)
at org.testng.TestNG.runSuitesLocally(TestNG.java:842)
at org.testng.TestNG.run(TestNG.java:751)
at org.testng.remote.RemoteTestNG.run(RemoteTestNG.java:73)
at org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:124)
Caused by: org.jboss.deployers.spi.DeploymentException: Error creating ejb container TimerServiceDispatcher: Container jboss.j2ee:jar=jboss-seam.jar,name=TimerServiceDispatcher,service=EJB3,VMID=4e3bfafb605e4946:4b61221b:127dec51249:-8000 + is already registered
at org.jboss.ejb3.Ejb3Deployment.deployElement(Ejb3Deployment.java:540)
at org.jboss.ejb3.Ejb3Deployment.deployElement(Ejb3Deployment.java:486)
at org.jboss.ejb3.Ejb3Deployment.deployUrl(Ejb3Deployment.java:468)
at org.jboss.ejb3.Ejb3Deployment.deploy(Ejb3Deployment.java:434)
at org.jboss.ejb3.Ejb3Deployment.create(Ejb3Deployment.java:376)
at org.jboss.ejb3.deployers.Ejb3Deployer.deploy(Ejb3Deployer.java:145)
... 36 more
Caused by: java.lang.IllegalStateException: Container jboss.j2ee:jar=jboss-seam.jar,name=TimerServiceDispatcher,service=EJB3,VMID=4e3bfafb605e4946:4b61221b:127dec51249:-8000 + is already registered
at org.jboss.ejb3.Ejb3Registry.register(Ejb3Registry.java:128)
at org.jboss.ejb3.Ejb3Deployment.deployElement(Ejb3Deployment.java:536)
... 41 more
FAILED CONFIGURATION: @BeforeSuite startSeam
org.jboss.deployers.client.spi.IncompleteDeploymentException: Summary of incomplete deployments (SEE PREVIOUS ERRORS FOR DETAILS):
*** CONTEXTS IN ERROR: Name -> Error
vfsjar:file:/C:/Users/will/eclipseWorkspace/forstersList-test/lib/jboss-seam.jar!/ -> java.lang.IllegalStateException: Container jboss.j2ee:jar=jboss-seam.jar,name=TimerServiceDispatcher,service=EJB3,VMID=4e3bfafb605e4946:4b61221b:127dec51249:-8000 + is already registered
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.DeploymentGroup.process(DeploymentGroup.java:128)
at org.jboss.embedded.Bootstrap.deployResourceBases(Bootstrap.java:289)
at org.jboss.seam.mock.EmbeddedBootstrap.startAndDeployResources(EmbeddedBootstrap.java:19)
at org.jboss.seam.mock.AbstractSeamTest.startJbossEmbeddedIfNecessary(AbstractSeamTest.java:1024)
at org.jboss.seam.mock.AbstractSeamTest.startSeam(AbstractSeamTest.java:915)
at org.jboss.seam.mock.SeamTest.startSeam(SeamTest.java:58)
... Removed 15 stack frames
SKIPPED CONFIGURATION: @BeforeClass setupClass
SKIPPED CONFIGURATION: @BeforeMethod begin
SKIPPED CONFIGURATION: @AfterMethod end
SKIPPED CONFIGURATION: @AfterClass cleanupClass
SKIPPED: createNode
===============================================
org.domain.forsterslist.session.NodeHomeTest
Tests run: 1, Failures: 0, Skips: 1
Configuration Failures: 1, Skips: 4
===============================================
===============================================
forstersList-test
Total tests run: 1, Failures: 0, Skips: 1
Configuration Failures: 1, Skips: 5
===============================================