[JBoss Seam] - Seam 2: is Spring integration totally broken?
by przemjaskier
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
18Â years, 10Â months
[JBoss Portal] - Re: RichFaces : sample for ajax jsf portlet provided
by Antoine_h
Hello,
JBoss AS 4.0.5GA or 4.2.0GA or 5 beta?
about JBoss AS, I don't remember where, but I read something saying that their would be some problems with 4.2.0 (unfortunately !).
look at the wiki... may be you'll find about this.
I think it is about JSF and things that are newly organized with the embedded tomcat of that new version of JB AS.
It will be resolved, but as I want to try RichFaces (brand new too), I said "let's keep with 4.0.5... not to much change at one time".
so my advice is 4.0.5.
- JBoss Seam 1.2.1GA or 2.0.0 beta
I don't use Seam.
I keep my layers (DAO, business object, GUI) separate.
On my opinion, and for myself, there is yet a lot to do (and learn) with portal, JSF, RichFaces, EJB3...
Seam is intersting... but will try this nice integration concept and features later.
- JDK (currently i'm using 1.5)
1.5 is good.
no problem with that (portal in dev, portal in prod... working fine).
Take the JBoss Portal release, alone or bundle with JB AS 4.0.5.
both are fine.
The first time, I use the bundle, then upgrade (from RC3) with the alone version.
You may want also to update "sometime" your portal with the nightly build.
So you have all the new Jira resolved.
you can get it here :
http://cruisecontrol.jboss.com/cc/artifacts/jboss-portal-trunk-build
Note : when trying to deploy it, use the option "deploy-all" to have all the portal features (samples etc...) deployed.
The doc does not say to use this option. (see other forum post about this).
By the way, you can also use the last version of Hibernate (upgrade the jboss as and portal hibernate jar). It works fine.
Look at Hibernate web site to take the latest "best" one : there was a few general problem with one release (for MySQL).
I use hibernate3.2.4.sp1
This version of hibernate allow to use annotation with EJB3. Nice. (if you don"t use Seam). (you have to download the annotation jar and etc...).
have fun...
View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4061769#4061769
Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4061769
18Â years, 10Â months
[JBoss Seam] - Re: @Factory annotation
by harpritt
Hi Pete
I was trying to do this... below
the only difference between this and what i actually did was that my multiple @Factory annotations were in a stateless session bean.... I was calling all 3 from a single UI page. The crappy problem i had was that only one of the 3 @Factory variables got added to the scope..... and seam ui complained about a needing a not null variable... I wish i could explain it better ....
|
| import org.jboss.seam.annotations.Factory;
| import org.jboss.seam.annotations.Name;
|
| @Name("UiStuff")
| public class UiStuff
| {
|
| @Factory("ages")
| public int[] getAges() {
| int[] ages = {18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30};
| return ages;
| }
|
| @Factory("names")
| public String[] getNames() {
| int[] names= {"jim","john","tom","mick","bodger","badger"};
| return names;
| }
|
| @Factory("reallyRandom")
| public String[] getRandomness() {
| int[] randomIt= {"john ketly","is","a","weather","man"};
| return randomIt;
| }
|
| }
View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4061767#4061767
Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4061767
18Â years, 10Â months