Embedded EJB Testing Woes
mwkohout Aug 21, 2007 2:53 PMI'm trying to use the embedded EJB container for testing a seam 2.0 seam-gen based app but am having problems.
I've got a datasource set up as so:
<?xml version="1.0" encoding="UTF-8"?> <deployment xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:jboss:bean-deployer bean-deployer_1_0.xsd" xmlns="urn:jboss:bean-deployer"> <bean name="ICTRCoreDatasourceBootstrap" class="org.jboss.resource.adapter.jdbc.local.LocalTxDataSource"> <property name="driverClass">com.mysql.jdbc.Driver</property> <property name="connectionURL">jdbc:mysql://de01.gcrc.umn.edu/mwkohout_ictrcore</property> <property name="userName">mwkohout</property> <property name="password">password</property> <property name="jndiName">java:/ICTRCoreDatasource</property> <property name="minSize">0</property> <property name="maxSize">10</property> <property name="blockingTimeout">1000</property> <property name="idleTimeout">100000</property> <property name="transactionManager"> <inject bean="TransactionManager"/> </property> <property name="cachedConnectionManager"> <inject bean="CachedConnectionManager"/> </property> <property name="initialContextProperties"> <inject bean="InitialContextProperties"/> </property> </bean> <bean name="ICTRCoreDatasource" class="java.lang.Object"> <constructor factoryMethod="getDatasource"> <factory bean="ICTRCoreDatasourceBootstrap"/> </constructor> </bean> </deployment>
It's living in test-build/META-INF/
and I've got a PU set up like so:
<?xml version="1.0" encoding="UTF-8"?> <!-- Persistence deployment descriptor for dev profile --> <persistence xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd" version="1.0"> <persistence-unit name="ICTRCore"> <provider>org.hibernate.ejb.HibernatePersistence</provider> <jta-data-source>java:/ICTRCoreDatasource</jta-data-source> <properties> <property name="hibernate.hbm2ddl.auto" value="update"/> <property name="hibernate.cache.use_query_cache" value="true"/> <property name="hibernate.show_sql" value="true"/> <property name="jboss.entity.manager.factory.jndi.name" value="java:/ICTRCoreEntityManagerFactory"/> </properties> </persistence-unit> </persistence>
It lives in the test-build/META-INF dir as well.
But I'm getting this error:
INFO 21-08 13:46:47,955 [org.hibernate.cfg.annotations.EntityBinder.bindTable():340] Bind entity edu.umn.ictr.authentication.Role on table Role INFO 21-08 13:46:47,999 [org.hibernate.cfg.annotations.CollectionBinder.bindOneToManySecondPass():581] Mapping collection: edu.umn.ictr.IRBInterface.IrbStudy.studyActions -> STUDY_ACTION INFO 21-08 13:46:48,000 [org.hibernate.cfg.annotations.CollectionBinder.bindOneToManySecondPass():581] Mapping collection: edu.umn.ictr.IRBInterface.IrbStudy.studyFundings -> STUDY_FUNDING INFO 21-08 13:46:48,000 [org.hibernate.cfg.annotations.CollectionBinder.bindOneToManySecondPass():581] Mapping collection: edu.umn.ictr.IRBInterface.IrbStudy.studyTitles -> STUDY_TITLE INFO 21-08 13:46:48,003 [org.hibernate.cfg.annotations.CollectionBinder.bindOneToManySecondPass():581] Mapping collection: edu.umn.ictr.IRBInterface.IrbStudy.studyPersons -> STUDY_PERSONNEL INFO 21-08 13:46:48,120 [org.hibernate.util.NamingHelper.getInitialContext():26] JNDI InitialContext properties:{} FATAL 21-08 13:46:48,141 [org.hibernate.connection.DatasourceConnectionProvider.configure():55] Could not find datasource: java:/ICTRCoreDatasource javax.naming.NameNotFoundException: ICTRCoreDatasource not bound at org.jnp.server.NamingServer.getBinding(NamingServer.java:542) at org.jnp.server.NamingServer.getBinding(NamingServer.java:550) at org.jnp.server.NamingServer.getObject(NamingServer.java:556) at org.jnp.server.NamingServer.lookup(NamingServer.java:296) at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:628) at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:590) at javax.naming.InitialContext.lookup(InitialContext.java:392) at org.hibernate.connection.DatasourceConnectionProvider.configure(DatasourceConnectionProvider.java:52) at org.hibernate.connection.ConnectionProviderFactory.newConnectionProvider(ConnectionProviderFactory.java:124) at org.hibernate.ejb.InjectionSettingsFactory.createConnectionProvider(InjectionSettingsFactory.java:29) at org.hibernate.cfg.SettingsFactory.buildSettings(SettingsFactory.java:62) at org.hibernate.cfg.Configuration.buildSettings(Configuration.java:2006) at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1289) at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:691) at org.hibernate.ejb.HibernatePersistence.createEntityManagerFactory(HibernatePersistence.java:121) at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:51) at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:33) at edu.umn.ictr.core.test.entity.UserTest.init(UserTest.java:52) 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:604) at org.testng.internal.Invoker.invokeConfigurationMethod(Invoker.java:394) at org.testng.internal.Invoker.invokeConfigurations(Invoker.java:142) at org.testng.internal.Invoker.invokeConfigurations(Invoker.java:79) at org.testng.internal.TestMethodWorker.invokeBeforeClassMethods(TestMethodWorker.java:165) at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:103) at org.testng.TestRunner.runWorkers(TestRunner.java:678) at org.testng.TestRunner.privateRun(TestRunner.java:624) at org.testng.TestRunner.run(TestRunner.java:495) at org.testng.SuiteRunner.runTest(SuiteRunner.java:300) at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:295) at org.testng.SuiteRunner.privateRun(SuiteRunner.java:275) at org.testng.SuiteRunner.run(SuiteRunner.java:190) at org.testng.TestNG.createAndRunSuiteRunners(TestNG.java:792) at org.testng.TestNG.runSuitesLocally(TestNG.java:765) at org.testng.TestNG.run(TestNG.java:699) at org.testng.TestNG.privateMain(TestNG.java:824) at org.testng.TestNG.main(TestNG.java:802) =============================================== Suite1 Total tests run: 1, Failures: 0, Skips: 1 Configuration Failures: 2, Skips: 2 ===============================================
What am I missing? Is there any obvious errors I'm making?
thanks
Mike Kohout