SeamTest NoInitialContextException
bartw Sep 30, 2009 10:38 AMHi, I am a seam greenhorn so it is very likely that the following is rather a trivial problem, if so sorry for this, but still I am unable to figure it out looking at seam examples. I am trying to write an integration test using SeamTest embedded jboss mode. Project is built using maven, seam version 2.2.0.GA, tests use testng. Test itself does not contain any logic at the moment, it is just:
@Test public void testNothing() throws Exception { new FacesRequest("/category.xhtml") { @Override protected void updateModelValues() { } @Override protected void invokeApplication() { } @Override protected void renderResponse() throws Exception { } }.run(); }
View category.xhtml is a home view for component CategoryHome managing simple entity called Category, containg only one simple string field.
Project consists of 4 modules, ear, ejb, war and model. Above test is placed in war module. No special configuration files (in context of tests) have been added besides of persistence.xml (model module, src/test/META-INF/persistence.xml):
<persistence-unit name="invoices-PersistenceUnit"> <provider>org.hibernate.ejb.HibernatePersistence</provider> <jta-data-source>java:/DefaultDS</jta-data-source> <properties> <property name="hibernate.hbm2ddl.auto" value="create-drop"/> <property name="hibernate.show_sql" value="true"/> <property name="hibernate.cache.use_second_level_cache" value="false"/> <property name="hibernate.transaction.manager_lookup_class" value="org.hibernate.transaction.JBossTransactionManagerLookup"/> </properties> </persistence-unit>
After test is executed, following stacktrace can be obeserved:
...........................
2009-09-30 10:18:11 org.jboss.seam.Component init INFO: Component: passwordGenerator, scope: STATELESS, type: STATELESS_SESSION_BEAN, class: com.consol.invoices.logic.mod el.PasswordGeneratorAction, JNDI: ${ear.artifactId}-${version}/PasswordGeneratorAction/local 2009-09-30 10:18:11 org.jboss.seam.Component init INFO: Component: productCriteria, scope: CONVERSATION, type: JAVA_BEAN, class: com.consol.invoices.model.ProductCriteria 2009-09-30 10:18:11 org.jboss.seam.Component init INFO: Component: productHome, scope: CONVERSATION, type: JAVA_BEAN, class: com.consol.invoices.logic.model.ProductHome 2009-09-30 10:18:11 org.jboss.seam.Component init INFO: Component: productList, scope: EVENT, type: JAVA_BEAN, class: org.jboss.seam.framework.EntityQuery 2009-09-30 10:18:11 org.jboss.seam.Component init INFO: Component: register, scope: EVENT, type: STATEFUL_SESSION_BEAN, class: com.consol.invoices.logic.security.Register Action, JNDI: ${ear.artifactId}-${version}/RegisterAction/local 2009-09-30 10:18:11 org.jboss.seam.Component init INFO: Component: user, scope: CONVERSATION, type: ENTITY_BEAN, class: com.consol.invoices.model.User 2009-09-30 10:18:11 org.jboss.seam.security.permission.PersistentPermissionResolver initPermissionStore WARNING: no permission store available - please install a PermissionStore with the name 'org.jboss.seam.security.jpaPerm issionStore' if persistent permissions are required. 2009-09-30 10:18:11 org.jboss.seam.servlet.SeamFilter init INFO: Initializing filter: org.jboss.seam.web.ajax4jsfFilter 2009-09-30 10:18:11 org.ajax4jsf.cache.CacheManager getCacheFactory INFO: Selected [org.ajax4jsf.cache.LRUMapCacheFactory] cache factory 2009-09-30 10:18:11 org.ajax4jsf.cache.LRUMapCacheFactory createCache INFO: Creating LRUMap cache instance using parameters: {org.richfaces.CONTROL_SKINNING_CLASSES=disable, org.richfaces.SK IN=glassX, org.richfaces.LoadStyleStrategy=ALL, org.richfaces.CONTROL_SKINNING=disable, facelets.DEVELOPMENT=@debug@, ja vax.faces.DEFAULT_SUFFIX=.xhtml, org.richfaces.LoadScriptStrategy=ALL} 2009-09-30 10:18:11 org.ajax4jsf.cache.LRUMapCacheFactory createCache INFO: Creating LRUMap cache instance of default capacity 2009-09-30 10:18:11 org.ajax4jsf.cache.CacheManager getCacheFactory INFO: Selected [org.ajax4jsf.cache.LRUMapCacheFactory] cache factory 2009-09-30 10:18:11 org.ajax4jsf.cache.LRUMapCacheFactory createCache INFO: Creating LRUMap cache instance using parameters: {org.richfaces.CONTROL_SKINNING_CLASSES=disable, org.richfaces.SK IN=glassX, org.richfaces.LoadStyleStrategy=ALL, org.richfaces.CONTROL_SKINNING=disable, facelets.DEVELOPMENT=@debug@, ja vax.faces.DEFAULT_SUFFIX=.xhtml, org.richfaces.LoadScriptStrategy=ALL} 2009-09-30 10:18:11 org.ajax4jsf.cache.LRUMapCacheFactory createCache INFO: Creating LRUMap cache instance of default capacity 2009-09-30 10:18:11 org.jboss.seam.servlet.SeamFilter init INFO: Initializing filter: org.jboss.seam.web.redirectFilter 2009-09-30 10:18:11 org.jboss.seam.servlet.SeamFilter init INFO: Initializing filter: org.jboss.seam.web.exceptionFilter 2009-09-30 10:18:11 org.jboss.seam.servlet.SeamFilter init INFO: Initializing filter: org.jboss.seam.web.multipartFilter 2009-09-30 10:18:11 org.jboss.seam.servlet.SeamFilter init INFO: Initializing filter: org.jboss.seam.web.identityFilter 2009-09-30 10:18:11 org.jboss.seam.jsf.SeamPhaseListener beforePhase SEVERE: swallowing exception java.lang.RuntimeException: exception invoking: getTransaction at org.jboss.seam.util.Reflections.invokeAndWrap(Reflections.java:154) at org.jboss.seam.Component.callComponentMethod(Component.java:2249) at org.jboss.seam.Component.unwrap(Component.java:2275) at org.jboss.seam.Component.getInstance(Component.java:2041) at org.jboss.seam.Component.getInstance(Component.java:2000) at org.jboss.seam.Component.getInstance(Component.java:1994) at org.jboss.seam.Component.getInstance(Component.java:1967) at org.jboss.seam.Component.getInstance(Component.java:1962) at org.jboss.seam.transaction.Transaction.instance(Transaction.java:39) at org.jboss.seam.jsf.SeamPhaseListener.handleTransactionsBeforePhase(SeamPhaseListener.java:321) at org.jboss.seam.jsf.SeamPhaseListener.beforeServletPhase(SeamPhaseListener.java:144) at org.jboss.seam.jsf.SeamPhaseListener.beforePhase(SeamPhaseListener.java:118) at org.jboss.seam.mock.AbstractSeamTest$Request.restoreViewPhase(AbstractSeamTest.java:721) at org.jboss.seam.mock.AbstractSeamTest$Request.emulateJsfLifecycle(AbstractSeamTest.java:583) at org.jboss.seam.mock.AbstractSeamTest$Request.access$100(AbstractSeamTest.java:177) at org.jboss.seam.mock.AbstractSeamTest$Request$2.doFilter(AbstractSeamTest.java:497) at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:83) at org.jboss.seam.web.IdentityFilter.doFilter(IdentityFilter.java:40) at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69) at org.jboss.seam.web.MultipartFilter.doFilter(MultipartFilter.java:90) at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69) at org.jboss.seam.web.ExceptionFilter.doFilter(ExceptionFilter.java:64) at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69) at org.jboss.seam.web.RedirectFilter.doFilter(RedirectFilter.java:45) at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69) ............................ at org.apache.maven.surefire.booter.SurefireBooter.runSuitesInProcess(SurefireBooter.java:345) at org.apache.maven.surefire.booter.SurefireBooter.main(SurefireBooter.java:1009) Caused by: javax.naming.NoInitialContextException: Need to specify class name in environment or system property, or as a n applet parameter, or in an application resource file: java.naming.factory.initial at javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:645) at javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:247) at javax.naming.InitialContext.getURLOrDefaultInitCtx(InitialContext.java:284) at javax.naming.InitialContext.lookup(InitialContext.java:351) at org.jboss.seam.transaction.Transaction.getUserTransaction(Transaction.java:82) at org.jboss.seam.transaction.Transaction.createUTTransaction(Transaction.java:74) at org.jboss.seam.transaction.Transaction.getTransaction(Transaction.java:47) 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.jboss.seam.util.Reflections.invoke(Reflections.java:22) at org.jboss.seam.util.Reflections.invokeAndWrap(Reflections.java:144) ... 62 more 2009-09-30 10:18:11 org.jboss.seam.jsf.SeamPhaseListener afterPhase WARNING: uncaught exception, passing to exception handler java.lang.IllegalStateException: Could not commit transaction at org.jboss.seam.jsf.SeamPhaseListener.commitOrRollback(SeamPhaseListener.java:625) at org.jboss.seam.jsf.SeamPhaseListener.commitOrRollback(SeamPhaseListener.java:604) at org.jboss.seam.jsf.SeamPhaseListener.handleTransactionsAfterPhase(SeamPhaseListener.java:345) at org.jboss.seam.jsf.SeamPhaseListener.afterServletPhase(SeamPhaseListener.java:245) at org.jboss.seam.jsf.SeamPhaseListener.afterPhase(SeamPhaseListener.java:196) at org.jboss.seam.mock.AbstractSeamTest$Request.restoreViewPhase(AbstractSeamTest.java:756) at org.jboss.seam.mock.AbstractSeamTest$Request.emulateJsfLifecycle(AbstractSeamTest.java:583) at org.jboss.seam.mock.AbstractSeamTest$Request.access$100(AbstractSeamTest.java:177) at org.jboss.seam.mock.AbstractSeamTest$Request$2.doFilter(AbstractSeamTest.java:497) at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:83) at org.jboss.seam.web.IdentityFilter.doFilter(IdentityFilter.java:40) at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69) at org.jboss.seam.web.MultipartFilter.doFilter(MultipartFilter.java:90) at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69) at org.jboss.seam.web.ExceptionFilter.doFilter(ExceptionFilter.java:64) at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69) at org.jboss.seam.web.RedirectFilter.doFilter(RedirectFilter.java:45) at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69) at org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:178) ................... Caused by: java.lang.RuntimeException: exception invoking: getTransaction at org.jboss.seam.util.Reflections.invokeAndWrap(Reflections.java:154) at org.jboss.seam.Component.callComponentMethod(Component.java:2249) at org.jboss.seam.Component.unwrap(Component.java:2275) at org.jboss.seam.Component.getInstance(Component.java:2041) at org.jboss.seam.Component.getInstance(Component.java:2000) at org.jboss.seam.Component.getInstance(Component.java:1994) at org.jboss.seam.Component.getInstance(Component.java:1967) at org.jboss.seam.Component.getInstance(Component.java:1962) at org.jboss.seam.transaction.Transaction.instance(Transaction.java:39) at org.jboss.seam.jsf.SeamPhaseListener.commitOrRollback(SeamPhaseListener.java:610) ... 55 more Caused by: javax.naming.NoInitialContextException: Need to specify class name in environment or system property, or as a n applet parameter, or in an application resource file: java.naming.factory.initial at javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:645) at javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:247) at javax.naming.InitialContext.getURLOrDefaultInitCtx(InitialContext.java:284) at javax.naming.InitialContext.lookup(InitialContext.java:351) at org.jboss.seam.transaction.Transaction.getUserTransaction(Transaction.java:82) at org.jboss.seam.transaction.Transaction.createUTTransaction(Transaction.java:74) at org.jboss.seam.transaction.Transaction.getTransaction(Transaction.java:47) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
appreciate any help
thanks
Bartek