[jbosstools-dev] Re: Fixed issues (testNG)

Max Rydahl Andersen max.andersen at redhat.com
Thu Sep 20 16:16:49 EDT 2007


Hi Denis,

> I have first update in CVS for EAR deployment it works for this case:

> 1. Create Seam project in EAR deployment
> 2. Create for or action for created project
> 3. Select test xml from test project and run it by Run As/TestNG Suite
> 
> test shoud pass now without errors.

Awsome ;)

Any changes needed in the seamgen related files ?

> Now I'm finishing te WAR configuration, need to do:
> Setup Web App Libraries as Exported in web projeject to fix tests 
> compilation error.

ok.

> After I have it there will be a problem with datasource.xml (see below). 
> Any Ideas how to fix it?

Peter - can you step in here and come with suggestions to where the 
datasource should be when running tests on war's (in this case there are 
no EJB/EAR....where would one put it then ?

Or does this actually require a different persistence.xml with 
hibernate.connection properties ?

Denis - have you looked in how seam-gen runs tests for wars ?

/max

> 12:40:23,421 WARN  [Ejb3Configuration] Overriding 
> hibernate.transaction.factory_class is dangerous, this might break the 
> EJB3 specification implementation
> 12:40:23,515 INFO  [NamingHelper] JNDI InitialContext 
> properties:{java.naming.factory.initial=org.jnp.interfaces.LocalOnlyContextFactory, 
> java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces}
> 12:40:23,515 FATAL [DatasourceConnectionProvider] Could not find 
> datasource: java:/testweb56Datasource
> javax.naming.NameNotFoundException: testweb56Datasource not bound
>    at org.jnp.server.NamingServer.getBinding(NamingServer.java:529)
>    at org.jnp.server.NamingServer.getBinding(NamingServer.java:537)
>    at org.jnp.server.NamingServer.getObject(NamingServer.java:543)
>    at org.jnp.server.NamingServer.lookup(NamingServer.java:296)
>    at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:626)
>    at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:588)
>    at javax.naming.InitialContext.lookup(Unknown Source)
>    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:61)
>    at 
> org.hibernate.cfg.Configuration.buildSettings(Configuration.java:1928)
>    at 
> org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1211) 
> 
>    at 
> org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:631) 
> 
>    at 
> org.hibernate.ejb.Ejb3Configuration.createEntityManagerFactory(Ejb3Configuration.java:760) 
> 
>    at 
> org.hibernate.ejb.Ejb3Configuration.createFactory(Ejb3Configuration.java:151) 
> 
>    at 
> org.hibernate.ejb.Ejb3Configuration.createEntityManagerFactory(Ejb3Configuration.java:205) 
> 
>    at 
> org.hibernate.ejb.HibernatePersistence.createEntityManagerFactory(HibernatePersistence.java:114) 
> 
>    at 
> javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:37) 
> 
>    at 
> org.jboss.seam.core.EntityManagerFactory.startup(EntityManagerFactory.java:74) 
> 
>    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
>    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
>    at java.lang.reflect.Method.invoke(Unknown Source)
>    at org.jboss.seam.util.Reflections.invoke(Reflections.java:20)
>    at org.jboss.seam.util.Reflections.invokeAndWrap(Reflections.java:123)
>    at org.jboss.seam.Component.callComponentMethod(Component.java:1842)
>    at org.jboss.seam.Component.callCreateMethod(Component.java:1757)
>    at org.jboss.seam.Component.newInstance(Component.java:1746)
>    at org.jboss.seam.contexts.Lifecycle.startup(Lifecycle.java:175)
>    at 
> org.jboss.seam.contexts.Lifecycle.endInitialization(Lifecycle.java:145)
>    at org.jboss.seam.init.Initialization.init(Initialization.java:504)
>    at org.jboss.seam.mock.SeamTest.init(SeamTest.java:701)
>    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
>    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
>    at java.lang.reflect.Method.invoke(Unknown Source)
>    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.remote.RemoteTestNG.run(RemoteTestNG.java:73)
>    at org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:122)
> FAILED CONFIGURATION: @BeforeClass init
> javax.persistence.PersistenceException: 
> org.hibernate.HibernateException: Could not find datasource
>    at 
> org.hibernate.ejb.Ejb3Configuration.createEntityManagerFactory(Ejb3Configuration.java:217) 
> 
>    at 
> org.hibernate.ejb.HibernatePersistence.createEntityManagerFactory(HibernatePersistence.java:114) 
> 
>    at 
> javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:37) 
> 
>    at 
> org.jboss.seam.core.EntityManagerFactory.startup(EntityManagerFactory.java:74) 
> 
>    at org.jboss.seam.util.Reflections.invoke(Reflections.java:20)
>    at org.jboss.seam.util.Reflections.invokeAndWrap(Reflections.java:123)
>    at org.jboss.seam.Component.callComponentMethod(Component.java:1842)
>    at org.jboss.seam.Component.callCreateMethod(Component.java:1757)
>    at org.jboss.seam.Component.newInstance(Component.java:1746)
>    at org.jboss.seam.contexts.Lifecycle.startup(Lifecycle.java:175)
>    at 
> org.jboss.seam.contexts.Lifecycle.endInitialization(Lifecycle.java:145)
>    at org.jboss.seam.init.Initialization.init(Initialization.java:504)
>    at org.jboss.seam.mock.SeamTest.init(SeamTest.java:701)
> Caused by: org.hibernate.HibernateException: Could not find datasource
>    at 
> org.hibernate.connection.DatasourceConnectionProvider.configure(DatasourceConnectionProvider.java:56) 
> 
>    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:61)
>    at 
> org.hibernate.cfg.Configuration.buildSettings(Configuration.java:1928)
>    at 
> org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1211) 
> 
>    at 
> org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:631) 
> 
>    at 
> org.hibernate.ejb.Ejb3Configuration.createEntityManagerFactory(Ejb3Configuration.java:760) 
> 
>    at 
> org.hibernate.ejb.Ejb3Configuration.createFactory(Ejb3Configuration.java:151) 
> 
>    at 
> org.hibernate.ejb.Ejb3Configuration.createEntityManagerFactory(Ejb3Configuration.java:205) 
> 
>    ... 38 more
> Caused by: javax.naming.NameNotFoundException: testweb56Datasource not 
> bound
>    at org.jnp.server.NamingServer.getBinding(NamingServer.java:529)
>    at org.jnp.server.NamingServer.getBinding(NamingServer.java:537)
>    at org.jnp.server.NamingServer.getObject(NamingServer.java:543)
>    at org.jnp.server.NamingServer.lookup(NamingServer.java:296)
>    at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:626)
>    at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:588)
>    at javax.naming.InitialContext.lookup(Unknown Source)
>    at 
> org.hibernate.connection.DatasourceConnectionProvider.configure(DatasourceConnectionProvider.java:52) 
> 
>    ... 47 more
> ... Removed 26 stack frames
> SKIPPED CONFIGURATION: @BeforeMethod begin
> SKIPPED CONFIGURATION: @AfterMethod end
> SKIPPED CONFIGURATION: @AfterClass cleanup
> SKIPPED: test
> 
> Thanks
> Denis
> 
> Max Rydahl Andersen wrote:
>>
>>> http://jira.jboss.com/jira/browse/JBIDE-906 - Create TestNG project 
>>> for Seam
>>> Project created in the same configuration as seam-gen does: with 
>>> components.properties for Web and test projects. Web project has 
>>> enbedded-ejb disabled, test vice versa.
>>> I'd say it fixed, but some configuration issues with class path 
>>> should be fixed
>>
>> fyi - I got a greenlight testng run now after some twiddling.
>>
>> I'm still investigating *exactly* why these tweaks are needed and if 
>> they have any effect other places but in short it is:
>>
>> 1) On web project only jboss-seam.jar is exposed on the classpath need 
>> to add the remaining jars in project properties/J2ee Module dependencies
>> (this makes drools/security issues go away). This modifies manfiest.mf 
>> which might effect how jboss 4.2 load classes so need to investigate 
>> if this should work or not.
>>
>> 2) Reorder the exported classpath on test to have the ear/ejb/war 
>> project at the *end* so the *-all.jar takes effect (this removes the 
>> weird NPE's which is probably caused by a mix of 
>> jbossxb/microcontainer from jboss 4.2 and the embedded ejb)
>>
>> 3) JarArchiveBrowser can't handle spaces so if your workspace is in 
>> c:/Document Settings/yadayda then you will get more weird errors. Move 
>> it to e.g. c:/rhdevstudio/workspace to make it work)
>>
>> The bad news is that it feels very fragile having these very different 
>> jars, but i guess that's life in JEE java ;(
>>
>> In any case the good news is that these are all explainable and 
>> fixable things.
>>
>> The extra good news is that all of the guys who have worked on these 
>> libs/jars will be in Neuchatel next week so they can buy me a beer or 
>> get beaten with a stick ;)
>>
>> /max
>>
> 




More information about the jbosstools-dev mailing list