Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Caused by: java.lang.IllegalStateException: A transaction manager must be provided

I am running a tasklet using Spring batch (4.1.4.RELEASE) and Spring jars (4.0.9.RELEASE) and getting the exception:

Caused by: java.lang.IllegalStateException: A transaction manager must be provided**
    at org.springframework.util.Assert.state(Assert.java:385) ~[spring-core-4.0.9.RELEASE.jar:4.0.9.RELEASE]
    at org.springframework.batch.core.step.tasklet.TaskletStep.afterPropertiesSet(TaskletStep.java:129) ~[spring-batch-core-4.1.4.RELEASE.jar:4.1.4.RELEASE]
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1613) ~[spring-beans-4.0.9.RELEASE.jar:4.0.9.RELEASE]
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1550) ~[spring-beans-4.0.9.RELEASE.jar:4.0.9.RELEASE]
    ... 41 more

Below I have shown the session factory XML-based configuration.

<bean id="sessionFactory" 
       class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
    <property name="dataSource" ref="dataSource" />
    <property name="configLocation" value="classpath:hibernate.cfg.xml" />
    <property name="hibernateProperties">
        <value>
            hibernate.show_sql=false
            hibernate.format_sql=false
                hibernate.dialect=org.hibernate.dialect.Oracle10gDialect
            hibernate.query.substitutions=true 'Y', false 'N'
            hibernate.cache.use_second_level_cache=true
                hibernate.cache.provider_class=net.sf.ehcache.hibernate.SingletonEhCacheProvider
            hibernate.cache.use_query_cache=true
        </value>
    </property>
</bean> 
    
<bean id="jdbcTransactionManager"
        class="org.springframework.jdbc.datasource.DataSourceTransactionManager"
        lazy-init="true">
    <property name="dataSource" ref="dataSource" />
</bean>

<bean id="hibernatetransactionManager"
        class="org.springframework.orm.hibernate3.HibernateTransactionManager"
        lazy-init="true">
    <property name="sessionFactory" ref="sessionFactory" />
</bean>

I have tried some changes in Spring batch and Spring core library versions but nothing is working and I am getting the same exception.

like image 365
Shreyas Avatar asked Oct 19 '25 20:10

Shreyas


1 Answers

The error happens in org.springframework.batch.core.step.tasklet.TaskletStep.afterPropertiesSet(TaskletStep.java:129) ~[spring-batch-core-4.1.4.RELEASE.jar:4.1.4.RELEASE], which means you did not set a transaction manager on your tasklet.

You did not share your tasklet's configuration, but you need to make sure a transaction manager is set on it, this is a mandatory property.

like image 172
Mahmoud Ben Hassine Avatar answered Oct 21 '25 09:10

Mahmoud Ben Hassine



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!