Нет управляемых подключений, доступных в течение настроенного времени ожидания блокировки (30000 [мс])

#hibernate #jboss #wildfly #jta #wildfly-10

#переход в спящий режим #jboss #wildfly #jta #wildfly-10

Вопрос:

Я использую WildFly V 10.1.0 с базой данных Mysql.

Я определил максимальный размер пула как 100 в конфигурации источника данных в standalone.xml

Но все же я получаю следующее исключение [1];

Я не вижу никаких проблем с сетью. Какие еще настройки мне нужно добавить?

Мой persistence.xml

 <persistence-unit name="adb-persistence-unit"
    transaction-type="JTA">
    <description>Forge Persistence Unit</description>
    <provider>org.hibernate.ejb.HibernatePersistence</provider>
    <jta-data-source>java:jboss/datasources/testDS</jta-data-source>        
    <shared-cache-mode>ALL</shared-cache-mode>
 <property name="jboss.as.jpa.providerModule" value="org.hibernate:5.2"/>

        <property name="hibernate.c3p0.min_size" value="5" />   
   <property name="hibernate.c3p0.max_size" value="500" />  
<property name="hibernate.c3p0.timeout" value="1800" />     
<property name="hibernate.c3p0.max_statements" value="100" /> 
    <property name="hibernate.c3p0.idle_test_period" value="3000" /> 
    <property name="hibernate.c3p0.acquire_increment" value="5" />  
<property name="hibernate.c3p0.validate" value="false" />
  

Я открываю сеанс как;

     @PersistenceContext
        protected EntityManager entityManager;
        private Criteria criteria;
        private Session session;

   session = getEntityManager().unwrap(Session.class);
  

[1]

 /20/2016 9:52:04 AMCaused by: java.sql.SQLException: javax.resource.ResourceException: IJ000453: Unable to get managed connection for java:jboss/datasources/testDS
10/20/2016 9:52:04 AM   at org.jboss.jca.adapters.jdbc.WrapperDataSource.getConnection(WrapperDataSource.java:146)
10/20/2016 9:52:04 AM   at org.jboss.as.connector.subsystems.datasources.WildFlyDataSource.getConnection(WildFlyDataSource.java:66)
10/20/2016 9:52:04 AM   at org.hibernate.engine.jdbc.connections.internal.DatasourceConnectionProviderImpl.getConnection(DatasourceConnectionProviderImpl.java:122)
10/20/2016 9:52:04 AM   at org.hibernate.internal.NonContextualJdbcConnectionAccess.obtainConnection(NonContextualJdbcConnectionAccess.java:35)
10/20/2016 9:52:04 AM   at org.hibernate.resource.jdbc.internal.LogicalConnectionManagedImpl.acquireConnectionIfNeeded(LogicalConnectionManagedImpl.java:99)
10/20/2016 9:52:04 AM   ... 225 more
10/20/2016 9:52:04 AMCaused by: javax.resource.ResourceException: IJ000453: Unable to get managed connection for java:jboss/datasources/testDS
10/20/2016 9:52:04 AM   at org.jboss.jca.core.connectionmanager.AbstractConnectionManager.getManagedConnection(AbstractConnectionManager.java:656)
10/20/2016 9:52:04 AM   at org.jboss.jca.core.connectionmanager.tx.TxConnectionManagerImpl.getManagedConnection(TxConnectionManagerImpl.java:429)
10/20/2016 9:52:04 AM   at org.jboss.jca.core.connectionmanager.AbstractConnectionManager.allocateConnection(AbstractConnectionManager.java:747)
10/20/2016 9:52:04 AM   at org.jboss.jca.adapters.jdbc.WrapperDataSource.getConnection(WrapperDataSource.java:138)
10/20/2016 9:52:04 AM   ... 229 more
10/20/2016 9:52:04 AMCaused by: javax.resource.ResourceException: IJ000655: No managed connections available within configured blocking timeout (30000 [ms])
10/20/2016 9:52:04 AM   at org.jboss.jca.core.connectionmanager.pool.mcp.SemaphoreConcurrentLinkedDequeManagedConnectionPool.getConnection(SemaphoreConcurrentLinkedDequeManagedConnectionPool.java:565)
10/20/2016 9:52:04 AM   at org.jboss.jca.core.connectionmanager.pool.AbstractPool.getTransactionNewConnection(AbstractPool.java:699)
10/20/2016 9:52:04 AM   at org.jboss.jca.core.connectionmanager.pool.AbstractPool.getConnection(AbstractPool.java:598)
10/20/2016 9:52:04 AM   at org.jboss.jca.core.connectionmanager.AbstractConnectionManager.getManagedConnection(AbstractConnectionManager.java:590)
10/20/2016 9:52:04 AM   ... 232 more
10/20/
  

Редактировать

Источник данных

      <datasources>
            <datasource jndi-name="java:jboss/datasources/testDS" pool-name="lobDS" enabled="true" use-java-context="true" use-ccm="true">
                <connection-url>jdbc:mysql://${env.MYSQL_PORT_3306_TCP_ADDR:db.xx.com}:${env.MYSQL_PORT_3306_TCP_PORT:3306}/${env.MYSQL_DATABASE:testdb}?failOverReadOnly=falseamp;amp;maxReconnects=10amp;amp;zeroDateTimeBehavior=convertToNullamp;amp;autoReconnect=trueamp;amp;characterEncoding=UTF-8amp;amp;characterSetResults=UTF-8amp;amp;useUnicode=trueamp;amp;interactiveClient=trueamp;amp;sessionVariables=storage_engine=InnoDB</connection-url>
                <driver>mysql</driver>
                <pool>
                    <flush-strategy>IdleConnections</flush-strategy>
 <max-pool-size>100</max-pool-size>  
                </pool>
                <security>
                    <user-name>${env.MYSQL_USER:admin}</user-name>
                    <password>${env.MYSQL_PASSWORD:ss_password}</password>
                </security>
                <validation>
                    <check-valid-connection-sql>SELECT 1</check-valid-connection-sql>
                    <background-validation>true</background-validation>
                    <background-validation-millis>60000</background-validation-millis>
                </validation>
            </datasource>
  

Комментарии:

1. как выглядит ваша конфигурация источника данных? поскольку свойства hibernate.c3p0.* игнорируются, и он использует источник данных, определенный в подсистеме источника данных сервера.

2. Зачем вам нужен сеанс? (вы должны иметь возможность обрабатывать сохранение только с помощью EntityManager)

3. @ctomc Я предоставил свою настройку источника данных и persistence.xml конфигурация. Как я могу изменить свою конфигурацию тогда?

4. @JohnDonn Я использую Criteria API (не hql) для запроса базы данных. критерии = getSession().createCriteria(getEntityClass());

5. @Ratha вы можете использовать EntityManager для работы с критериями JPA javacodegeeks.com/2013/04 /… . Кроме того, насколько я знаю, в Wildfly стандартным способом сохранения является использование JPA и EntityManager, поэтому я думаю, что лучше избегать работы с Hibernate напрямую, если это действительно не необходимо.