Spring升级4.x到5.3.x,无可用的连接保持器

zsbz8rwp  于 2023-03-28  发布在  Spring
关注(0)|答案(1)|浏览(231)

Getting no connection保持器available error,是他们在spring 5中对TransactionProxyFactoryBean的任何更改,使用apache ojb作为orm

**<bean id="testBean" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
        <property name="transactionManager">
            <ref bean="transactionManager"/>
        </property>
        <property name="target">
            <ref bean="TestTarget"/>
        </property>
        <property name="transactionAttributes">
            <props>
            <prop key="insert*">PROPAGATION_REQUIRED, ISOLATION_READ_COMMITTED</prop>
        <prop key="update*">PROPAGATION_REQUIRED, ISOLATION_READ_COMMITTED</prop>
        <prop key="save*">PROPAGATION_REQUIRED, ISOLATION_READ_COMMITTED</prop>
        <prop key="delete*">PROPAGATION_REQUIRED, ISOLATION_READ_COMMITTED</prop>
                <prop key="*">PROPAGATION_REQUIRED,readOnly</prop>
            </props>
        </property>
    </bean>**

**java.lang.IllegalStateException: No ConnectionHolder available**
    at org.springframework.util.Assert.state(Assert.java:76) ~[spring-core-5.3.25.jar:5.3.25]
    at org.springframework.jdbc.datasource.JdbcTransactionObjectSupport.getConnectionHolder(JdbcTransactionObjectSupport.java:76) ~[spring-jdbc-5.3.25.jar:5.3.25]
    at org.springmodules.orm.ojb.PersistenceBrokerTransactionManager$PersistenceBrokerTransactionObject.isRollbackOnly(PersistenceBrokerTransactionManager.java:230) ~[classes/:?]
mqkwyuun

mqkwyuun1#

你似乎使用了非常古老的(我会说是古老的)Spring Modules(在2008年被Spring Extensions取代,此后也被弃用)。
实际上,我很惊讶它能工作这么久,因为它已经被弃用/不支持了15年以上。Spring Extensions在那之后不久就被放弃了(或者至少没有多少版本被发布)。
list of Spring Extensions显示其中一些已经被放弃,其他已经被集成到投资组合本身的部分(如Spring Security,Spring Integration或Spring Data)。其他只是为了利基而被放弃。
所以我建议简单地抛弃Spring Modules,因为没有支持您当前技术堆栈的版本。我不确定您正在使用什么,但它似乎与JPA/Hibernate有关,我怀疑它已经被Spring Data模块之一取代和改进。

相关问题