[jboss-user] [JBoss Seam] - Seam 2: is Spring integration totally broken?

przemjaskier do-not-reply at jboss.com
Sun Jul 8 17:10:07 EDT 2007


Env: Tomcat 6.0.13, Spring 2.0.6, Seam CVS snapshot 08-07-2007.

Task: I try to get Seam-managed hibernate session to work. Datasource and HibernateSessionFactory are wired by Spring. Then I want to get to that factory from within components.xml, to enable Seam-managed session.

I tried both ways to integratie Seam-Spring described in manual. Both failed totally. Both attempts are listed below.

components.xml is the same in both cases:


  |    <core:init debug="false"/>      
  |             
  |    <core:manager conversation-timeout="120000" 
  |                   concurrent-request-timeout="500"
  |                   conversation-id-parameter="k"/>
  |         
  |     <persistence:managed-hibernate-session name="pecpSeamManagedHibernateSession" auto-create="true" 
  | 		session-factory="#{hibernateSessionFactory}"/>
  |     
  |     <transaction:hibernate-transaction session="#{pecpSeamManagedHibernateSession}"/>
  | 


1. Attempt: use <seam:component>: FAILED


1.1 Spring context file:


  | <bean id="hibernateSessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean" scope="prototype">
  |         <seam:component name="hibernateSessionFactory" class="org.hibernate.impl.SessionFactoryImpl"/>
  |         <property name="dataSource" ref="dataSource" />
  |         <property name="configLocation" value="classpath:conf/hibernate/hibernate.cfg.xml" />
  |         <property name="configurationClass" value="org.hibernate.cfg.AnnotationConfiguration"/>
  |         <property name="namingStrategy">
  |             <bean class="pecp.persistence.hibernate.extensions.UnderscoreAwareNamingStrategy"/>
  |         </property>
  |         <property name="hibernateProperties">
  |             <props>
  |                 <prop key="hibernate.hbm2ddl.auto">create</prop>
  |             </props>
  |         </property>
  |     </bean>
  | 

1.2. Result: nasty exception at startup (in both cases - when Seam listener is before Spring listener in web.xml and the other way):


  | * 2007-07-08 23:06:12,305 ERROR ContextLoader.initWebApplicationContext():203
  |   Context initialization failed
  | org.springframework.beans.factory.BeanDefinitionStoreException: Unexpected exception parsing XML document from class path resource [conf/spring/persistence-hibernate.xml]; nested exception is java.lang.IllegalStateException: No active application scope
  | Caused by: 
  | java.lang.IllegalStateException: No active application scope
  | 	at org.jboss.seam.core.Init.instance(Init.java:88)
  | 	at org.jboss.seam.ioc.spring.SeamNamespaceHandler$SeamComponentBeanDefinitionDecorator.decorate(SeamNamespaceHandler.java:191)
  | 	at org.springframework.beans.factory.xml.NamespaceHandlerSupport.decorate(NamespaceHandlerSupport.java:106)
  | 	at org.springframework.beans.factory.xml.BeanDefinitionParserDelegate.decorateIfRequired(BeanDefinitionParserDelegate.java:1143)
  | 	at org.springframework.beans.factory.xml.BeanDefinitionParserDelegate.decorateBeanDefinitionIfRequired(BeanDefinitionParserDelegate.java:1132)
  | 	at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.processBeanDefinition(DefaultBeanDefinitionDocumentReader.java:237)
  | 	at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.parseDefaultElement(DefaultBeanDefinitionDocumentReader.java:151)
  | 	at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.parseBeanDefinitions(DefaultBeanDefinitionDocumentReader.java:130)
  | 	at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.registerBeanDefinitions(DefaultBeanDefinitionDocumentReader.java:90)
  | 	at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.registerBeanDefinitions(XmlBeanDefinitionReader.java:458)
  | 	at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadBeanDefinitions(XmlBeanDefinitionReader.java:353)
  | 	at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:303)
  | 	at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:280)
  | 	at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:131)
  | 	at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:147)
  | 	at org.springframework.web.context.support.XmlWebApplicationContext.loadBeanDefinitions(XmlWebApplicationContext.java:124)
  | 	at org.springframework.web.context.support.XmlWebApplicationContext.loadBeanDefinitions(XmlWebApplicationContext.java:92)
  | 	at org.springframework.context.support.AbstractRefreshableApplicationContext.refreshBeanFactory(AbstractRefreshableApplicationContext.java:101)
  | 	at org.springframework.context.support.AbstractApplicationContext.obtainFreshBeanFactory(AbstractApplicationContext.java:389)
  | 	at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:324)
  | 	at org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java:244)
  | 	at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:187)
  | 	at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:49)
  | 	at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3827)
  | 	at org.apache.catalina.core.StandardContext.start(StandardContext.java:4334)
  | 	at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
  | 	at org.apache.catalina.core.StandardHost.start(StandardHost.java:719)
  | 	at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
  | 	at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443)
  | 	at org.apache.catalina.core.StandardService.start(StandardService.java:516)
  | 	at org.apache.catalina.core.StandardServer.start(StandardServer.java:710)
  | 	at org.apache.catalina.startup.Catalina.start(Catalina.java:566)
  | 	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.apache.catalina.startup.Bootstrap.start(Bootstrap.java:288)
  | 	at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413)
  | Jul 8, 2007 11:06:12 PM org.apache.catalina.core.StandardContext listenerStart
  | SEVERE: Exception sending context initialized event to listener instance of class org.springframework.web.context.ContextLoaderListener
  | org.springframework.beans.factory.BeanDefinitionStoreException: Unexpected exception parsing XML document from class path resource [conf/spring/persistence-hibernate.xml]; nested exception is java.lang.IllegalStateException: No active application scope
  | Caused by: java.lang.IllegalStateException: No active application scope
  | 	at org.jboss.seam.core.Init.instance(Init.java:88)
  | 	at org.jboss.seam.ioc.spring.SeamNamespaceHandler$SeamComponentBeanDefinitionDecorator.decorate(SeamNamespaceHandler.java:191)
  | 	at org.springframework.beans.factory.xml.NamespaceHandlerSupport.decorate(NamespaceHandlerSupport.java:106)
  | 	at org.springframework.beans.factory.xml.BeanDefinitionParserDelegate.decorateIfRequired(BeanDefinitionParserDelegate.java:1143)
  | 	at org.springframework.beans.factory.xml.BeanDefinitionParserDelegate.decorateBeanDefinitionIfRequired(BeanDefinitionParserDelegate.java:1132)
  | 	at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.processBeanDefinition(DefaultBeanDefinitionDocumentReader.java:237)
  | 	at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.parseDefaultElement(DefaultBeanDefinitionDocumentReader.java:151)
  | 	at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.parseBeanDefinitions(DefaultBeanDefinitionDocumentReader.java:130)
  | 	at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.registerBeanDefinitions(DefaultBeanDefinitionDocumentReader.java:90)
  | 	at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.registerBeanDefinitions(XmlBeanDefinitionReader.java:458)
  | 	at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadBeanDefinitions(XmlBeanDefinitionReader.java:353)
  | 	at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:303)
  | 	at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:280)
  | 	at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:131)
  | 	at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:147)
  | 	at org.springframework.web.context.support.XmlWebApplicationContext.loadBeanDefinitions(XmlWebApplicationContext.java:124)
  | 	at org.springframework.web.context.support.XmlWebApplicationContext.loadBeanDefinitions(XmlWebApplicationContext.java:92)
  | 	at org.springframework.context.support.AbstractRefreshableApplicationContext.refreshBeanFactory(AbstractRefreshableApplicationContext.java:101)
  | 	at org.springframework.context.support.AbstractApplicationContext.obtainFreshBeanFactory(AbstractApplicationContext.java:389)
  | 	at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:324)
  | 	at org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java:244)
  | 	at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:187)
  | 	at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:49)
  | 	at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3827)
  | 	at org.apache.catalina.core.StandardContext.start(StandardContext.java:4334)
  | 	at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
  | 	at org.apache.catalina.core.StandardHost.start(StandardHost.java:719)
  | 	at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
  | 	at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443)
  | 	at org.apache.catalina.core.StandardService.start(StandardService.java:516)
  | 	at org.apache.catalina.core.StandardServer.start(StandardServer.java:710)
  | 	at org.apache.catalina.startup.Catalina.start(Catalina.java:566)
  | 	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.apache.catalina.startup.Bootstrap.start(Bootstrap.java:288)
  | 	at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413)
  | Jul 8, 2007 11:06:12 PM org.apache.catalina.core.StandardContext start
  | SEVERE: Error listenerStart
  | 


2, Attempt: use EL resolver approach: FAILED: 


2.1 Spring context file:


  | <bean id="hibernateSessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean" scope="prototype">
  |         <property name="dataSource" ref="dataSource" />
  |         <property name="configLocation" value="classpath:conf/hibernate/hibernate.cfg.xml" />
  |         <property name="configurationClass" value="org.hibernate.cfg.AnnotationConfiguration"/>
  |         <property name="namingStrategy">
  |             <bean class="pecp.persistence.hibernate.extensions.UnderscoreAwareNamingStrategy"/>
  |         </property>
  |         <property name="hibernateProperties">
  |             <props>
  |                 <prop key="hibernate.hbm2ddl.auto">create</prop>
  |             </props>
  |         </property>
  |     </bean>
  | 

2.2 Spring EL resolver added to faces-config.xml,

2.3 Result: Seam enters infinite loop, looks like it simply instantiates 
hibernateSessionFactory Spring bean over an over again.

View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4061770#4061770

Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4061770



More information about the jboss-user mailing list