hibernate-5.4.0-upgrade-reason-ij000453-не удалось получить управляемое соединение для java: / xa-Datasource - PullRequest
1 голос
/ 08 мая 2019

У нас есть приложение, работающее на Java 8, Wildfly 10, Hibernate 5.0.10 и Spring 4.3.11.

Мы обновили систему до OpenJDK11, Wildfly 16 и Spring 5.1.0, и все работаеткак и ожидалось.

Но когда мы пытаемся обновить Hibernate до версии 5.3.6 / 7 / 5.4.0, мы сталкиваемся с проблемами при подключении к базе данных.

Ниже приведены утверждения из журналов, которыеЯ могу поделиться.

Unable to acquire JDBC Connection at org.hibernate.exception.internal.StandardSQLExceptionConverter.convert(StandardSQLExceptionConverter.java:47)

org.hibernate.resource.jdbc.internal.LogicalConnectionManagedImpl.getPhysicalConnection(LogicalConnectionManagedImpl.java:136)
java.sql.SQLException: javax.resource.ResourceException: IJ000453: Unable to get managed connection for java:/RND_XA_DS
    at org.jboss.ironjacamar.jdbcadapters@1.4.12.Final//org.jboss.jca.adapters.jdbc.WrapperDataSource.getConnection(WrapperDataSource.java:146)
    at org.jboss.as.connector@16.0.0.Final//org.jboss.as.connector.subsystems.datasources.WildFlyDataSource.getConnection(WildFlyDataSource.java:64)
    at 
 javax.resource.ResourceException: IJ000655: No managed connections available within configured blocking timeout (30000 [ms])
    at org.jboss.ironjacamar.impl@1.4.12.Final//org.jboss.jca.core.connectionmanager.pool.mcp.SemaphoreConcurrentLinkedDequeManagedConnectionPool.getConnection(SemaphoreConcurrentLinkedDequeManagedConnectionPool.java:570)
    at org.jboss.ironjacamar.impl@1.4.12.Final//org.jboss.jca.core.connectionmanager.pool.AbstractPool.getTransactionNewConnection(AbstractPool.java:714)
    at org.jboss.ironjacamar.impl@1.4.12.Final//org.jboss.jca.core.connectionmanager.pool.AbstractPool.getConnection(AbstractPool.java:613)
    at org.jboss.ironjacamar.impl@1.4.12.Final//org.jboss.jca.core.connectionmanager.AbstractConnectionManager.getManagedConnection(AbstractConnectionManager.java:624)

1. Увеличен максимальный размер пула в standalone-full-ha.xml wildfly с 35 до 100.

2. Изменены свойства cfg SessionFactory, измененыконфигурации транзакций со свойствами, поддерживаемыми Hibernate 5.4.0

3.Пробовал все доступные значения стратегии сброса в standalone-full-ha.xml согласно (https://docs.jboss.org/hibernate/orm/5.4/userguide/html_single/Hibernate_User_Guide.html#flushing)

4.Пробовал все доступныеhibernate.connection.handling_mode для SessionFactory (https://docs.jboss.org/hibernate/orm/5.4/userguide/html_single/Hibernate_User_Guide.html#database-connection-handling)

5. С учетом вышеуказанных изменений EAR приложения не удалось успешно развернуть. На этом этапе все проблемы были распространены.

6. Изменения, которыепомог а) сделкаконфигурации в файле persistence.xml, свойство hibernate.transaction.jta.platform изменено на JBossAS. b) Закрытые сеансы, где бы они ни были открыты в коде.

7. Увеличение числа процессов Oracle до 800.

8.Обновлен драйвер OJdbc в ojdbc8.

<xa-datasource jndi-name="java:/RND_XA_DS" pool-name="XYZ" enabled="true" spy="true" use-ccm="false">
                    <xa-datasource-property name="URL">
                        jdbc:oracle:thin:@localhost:1521:xe
                    </xa-datasource-property>
                    <driver>Oracle11G</driver>
                    <xa-pool>
                        <min-pool-size>10</min-pool-size>
                        <max-pool-size>35</max-pool-size>
                        <prefill>true</prefill>
                        <flush-strategy>Gracefully</flush-strategy>
                        <is-same-rm-override>false</is-same-rm-override>
                        <interleaving>false</interleaving>
                        <pad-xid>false</pad-xid>
                        <wrap-xa-resource>false</wrap-xa-resource>
                    </xa-pool>
                    <security>
                        <security-domain>XYZ</security-domain>
                    </security>
                    <validation>
                        <check-valid-connection-sql>select 1 from dual</check-valid-connection-sql>
                        <validate-on-match>false</validate-on-match>
                        <background-validation>false</background-validation>
                    </validation>
                    <statement>
                        <share-prepared-statements>false</share-prepared-statements>
                    </statement>
                </xa-datasource>
####### Свойства SESSIONFACTORY
<property name="hibernateProperties">
            <props>
                <prop key="hibernate.dialect">
                    ${SESSIONFACTORY.DIALECT}
                </prop>
                <prop key="hibernate.show_sql">${SESSIONFACTORY.SHOWSQL}</prop>
                <prop key="hibernate.current_session_context_class">jta</prop>
                <prop key="hibernate.transaction.jta.platform">JBossAS
                </prop>
                <prop key="hibernate.transaction.coordinator_class">jta</prop>
                <prop key="hibernate.connection.handling_mode">DELAYED_ACQUISITION_AND_RELEASE_AFTER_TRANSACTION</prop>
                <prop key="jta.UserTransaction">${USER_TRANSACTION}</prop>
            </props>
        </property>

EAR успешно развертывается в Wildfly, и все операции, выполняемые с приложением, взаимодействующим с базой данных, выполняются успешно.В мгновение ока Hibernate начинает выдавать Unable для получения управляемого соединения

...