Announcement Announcement Module
Collapse
No announcement yet.
Using multiple JpaFlowExecutionListener in Spring Web Flow Page Title Module
Move Remove Collapse
X
Conversation Detail Module
Collapse
  • Filter
  • Time
  • Show
Clear All
new posts

  • Using multiple JpaFlowExecutionListener in Spring Web Flow

    I'm using multiple DataSources in my JSF/Spring/Spring-Webflow application. So I tried to declare multiple JpaFlowExecutionListener in the configuration file of Spring Web Flow because i had this problem :

    Caused by: org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role: com.abc.commons.domain.Module, no session or session was closed

    But this haven't solved the problem. Spring Web Flow appear to use only the first JpaFlowExecutionListener declared in webflow.xml

    Any way to solve this problem ?

    Thanks in advance

    applicationContext.xml

    Code:
    <jpa:repositories base-package="com.abc.dao.ratikDB"
        factory-class="com.abc.dao.support.CustomRepositoryFactoryBean"
        transaction-manager-ref="ratikDBTransactionManager"
        entity-manager-factory-ref="ratikDBEntityManagerFactory">
    </jpa:repositories>
    
    <jpa:repositories base-package="com.abc.dao.csmaDB"
        factory-class="com.abc.dao.support.CustomRepositoryFactoryBean"
        transaction-manager-ref="csmaDBTransactionManager"
        entity-manager-factory-ref="csmaDBEntityManagerFactory">
    </jpa:repositories>
    
    <bean id="ratikDBTransactionManager" class="org.springframework.orm.jpa.JpaTransactionManager"
        p:entityManagerFactory-ref="ratikDBEntityManagerFactory">
        <description>Please read
            http://www.springframework.org/docs/reference/transaction.html
        </description>
    </bean>
    
    <bean id="csmaDBTransactionManager" class="org.springframework.orm.jpa.JpaTransactionManager"
        p:entityManagerFactory-ref="csmaDBEntityManagerFactory">
        <description>Please read
            http://www.springframework.org/docs/reference/transaction.html
        </description>
    </bean>
    
    
    <bean id="hibernateJpaVendorAdapter"
        class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
        <description>Allow spring to configure hibernate specific settings
        </description>
    </bean>
    <bean id="adminXDBEntityManagerFactory"
        class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean"
        p:dataSource-ref="ratikDBDataSource" p:jpaVendorAdapter-ref="hibernateJpaVendorAdapter"
        p:jpaProperties="classpath:hibernate.properties">
        <description>Build the entity manager with Hibernate as a provider
        </description>
    </bean>
    
    <bean id="csmaDBEntityManagerFactory"
        class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean"
        p:dataSource-ref="csmaDBDataSource" p:jpaVendorAdapter-ref="hibernateJpaVendorAdapter"
        p:jpaProperties="classpath:hibernate.properties">
        <description>Build the entity manager with Hibernate as a provider
        </description>
    </bean>
    webflow.xml

    Code:
    flow-executor id="flowExecutor">
        <flow-execution-listeners>
            <listener ref="flowTimerFilter" />
            <listener ref="facesContextListener" />
            <listener ref="securityListener" />
            <listener ref="JpaFlowExecutionListener" />
            <listener ref="flowsMenuExecutionListener" />
        </flow-execution-listeners>
        <!-- Note1: if you change ' max-executions' then please change also flowsMenuHandler.maxExecutions -->
        <!-- Note2: when max-execution-snapshots is "0" then snapshoting is disabled, this is better for performances -->
         <flow-execution-repository max-executions="5" max-execution-snapshots="0"/>
    </flow-executor>
    
    <!-- The registry of executable flow definitions -->
    <flow-registry id="flowRegistry" flow-builder-services="flowBuilderServices" base-path="/WEB-INF/flows">
        <flow-location-pattern value="/**/*-flow.xml" />
    </flow-registry>
    
    <!-- Configures the Spring Web Flow JSF integration -->
    <faces:flow-builder-services id="flowBuilderServices" development="true" /> 
    
    <!-- A listener to create and release a FacesContext -->
    <beans:bean id="facesContextListener" class="org.springframework.faces.webflow.FlowFacesContextLifecycleListener" />
    
    <!-- A listener to apply Spring Security authorities -->
    <beans:bean id="securityListener" class="org.springframework.webflow.security.SecurityFlowExecutionListener" />
    
    <beans:bean id="flowTimerFilter" class="com.abc.web.filter.FlowTimerFilter">
        <beans:description>Simple debug listener allowing you to track and log the active flow</beans:description>
    </beans:bean>
    
    <beans:bean id="JpaFlowExecutionListener" class="org.springframework.webflow.persistence.JpaFlowExecutionListener">
        <beans:constructor-arg ref="ratikDBEntityManagerFactory" />
        <beans:constructor-arg ref="ratikDBTransactionManager" />
    </beans:bean>
    
    
    
    <beans:bean id="flowsMenuExecutionListener" class="com.tunisiana.adminx.web.flow.FlowsMenuExecutionListener">
        <beans:description>Track the various user's flows so they can be reached from a Menu</beans:description>
    </beans:bean>
Working...
X