2013-05-23 3 views
0

Je novice en Java s'il vous plaît aidez-moi à comprendre comment est juste. Et mon anglais au niveau de base ..IJ000653: Le pool a été arrêté JBoss AS 7 OpenShift

J'utilise OpenShift et avant, peut-être il y a 2 semaines ou plus tout bien, mais la dernière fois que j'ai 3 ou ~ < 20 erreurs comme celle-ci:

peut-être quelque chose est faux sur OpenShift? ou je fais quelque chose de mal?

S'il vous plaît me expliquer pourquoi cela est arrivé ?:

Caused by: javax.resource.spi.RetryableUnavailableException: IJ000653: The pool has been shutdown (MysqlDS,178e455) 

similaires: IJ000453: Unable to get managed connection datasources

<datasource jndi-name="java:jboss/datasources/ShopDS" enabled="${mysql.enabled}" 
       use-java-context="true" pool-name="MysqlDS" use-ccm="false"> 
       <connection-url>jdbc:mysql://${env.OPENSHIFT_MYSQL_DB_HOST}:${env.OPENSHIFT_MYSQL_DB_PORT}/${env.OPENSHIFT_APP_NAME} 
       </connection-url> 
       <driver>mysql</driver> 
       <connection-property name="autoReconnect">true</connection-property> 
       <connection-property name="useUnicode">true</connection-property> 
       <connection-property name="autoCommit">false</connection-property> 
       <connection-property name="characterEncoding">UTF-8</connection-property> 
       <transaction-isolation>TRANSACTION_READ_COMMITTED</transaction-isolation> 
       <pool> 
        <min-pool-size>10</min-pool-size> 
        <max-pool-size>300</max-pool-size> 
        <flush-strategy>IdleConnections</flush-strategy> 
        <prefill>true</prefill> 
       </pool> 
       <security> 
        <user-name>${env.OPENSHIFT_MYSQL_DB_USERNAME}</user-name> 
        <password>${env.OPENSHIFT_MYSQL_DB_PASSWORD}</password> 
       </security> 
       <validation> 
        <valid-connection-checker 
         class-name="org.jboss.jca.adapters.jdbc.extensions.mysql.MySQLValidConnectionChecker" /> 
        <check-valid-connection-sql>SELECT 1</check-valid-connection-sql> 
        <validate-on-match>true</validate-on-match> 
        <background-validation>true</background-validation> 
        <exception-sorter class-name="org.jboss.jca.adapters.jdbc.extensions.mysql.MySQLExceptionSorter" /> 
       </validation> 
       <timeout> 
        <idle-timeout-minutes>60000</idle-timeout-minutes> 
       </timeout> 
      </datasource> 

hibernate.cfg.xml

<?xml version='1.0' encoding='utf-8'?> 
<!DOCTYPE hibernate-configuration PUBLIC 
     "-//Hibernate/Hibernate Configuration DTD 3.0//EN" 
     "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd"> 
<hibernate-configuration> 
    <session-factory> 
     <property name="hibernate.dialect">org.hibernate.dialect.MySQL5InnoDBDialect 
     </property> 
     <property name="hibernate.connection.datasource">java:jboss/datasources/ShopDS</property> 
     <property name="hibernate.connection.autoReconnect">true</property> 
     <property name="hibernate.connection.is-connection-validation-required">true</property> 
     <property name="hibernate.connection.autocommit">false</property> 
     <property name="hibernate.connection.release_mode">after_statement</property> 
     <property name="hibernate.connection.useUnicode">true</property> 
     <property name="hibernate.connection.characterEncoding">utf8</property> 
     <property name="hibernate.connection.charSet">UTF-8</property> 
     <property name="hibernate.show_sql">false</property> 
     <property name="hibernate.use_sql_comments">false</property> 
     <property name="hibernate.format_sql">false</property> 
     <property name="hibernate.current_session_context_class">jta</property> 
     <property name="hibernate.transaction.manager_lookup_class">org.hibernate.transaction.JBossTransactionManagerLookup</property> 
     <property name="hibernate.transaction.jta.platform">org.hibernate.service.jta.platform.internal.JBossAppServerJtaPlatform</property> 
     <property name="hibernate.transaction.auto_close_session">true</property> 
     <property name="hibernate.archive.autodetection">class, hbm</property> 
     <property name="hibernate.generate_statistics">true</property> 
     <property name="hibernate.cache.use_query_cache">false</property> 
     <property name="hibernate.cache.use_second_level_cache">false</property> 
     <property name="hibernate.cache.use_minimal_puts">true</property> 
     <property name="hibernate.cache.use_structured_entries">true</property> 
     <property name="hibernate.hbm2ddl.auto">update</property> 
     <property name="hibernate.connection.pool_size">20</property> 
     <property name="hibernate.default_batch_fetch_size">20</property> 
     <property name="hibernate.max_fetch_depth">6</property> 
     <mapping class="small.business.dao.entity.Settings" /> 
    </session-factory> 
</hibernate-configuration> 

printemps-JPA-config.xml

<?xml version="1.0" encoding="UTF-8"?> 
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns:jdbc="http://www.springframework.org/schema/jdbc" xmlns:jee="http://www.springframework.org/schema/jee" 
    xmlns:tx="http://www.springframework.org/schema/tx" 
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd 
     http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc-3.2.xsd 
     http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-3.2.xsd 
     http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.2.xsd"> 

    <jee:jndi-lookup jndi-name="java:/db_EntityManagerFactory" id="entityManagerFactory" 
     expected-type="javax.persistence.EntityManagerFactory" cache="true" /> 

    <bean id="entityManager" class="org.springframework.orm.jpa.support.SharedEntityManagerBean"> 
     <property name="entityManagerFactory" ref="entityManagerFactory" /> 
    </bean> 

    <!-- Process the PersistenceUnit and PersistenceContext annotations --> 
    <bean class="org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor" /> 
    <bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean"> 
     <property name="configLocation" value="classpath:hibernate.cfg.xml" /> 
    </bean> 

    <!-- <bean class="org.springframework.orm.hibernate4.support.OpenSessionInViewInterceptor"> --> 
    <!-- <property name="sessionFactory" ref="sessionFactory" /> --> 
    <!-- </bean> --> 

    <bean class="org.springframework.orm.hibernate4.HibernateExceptionTranslator" /> 
    <tx:annotation-driven /> 
    <bean id="transactionManager" class="org.springframework.transaction.jta.JtaTransactionManager"> 
     <property name="transactionManagerName" value="java:/TransactionManager" /> 
     <property name="userTransactionName" value="java:jboss/UserTransaction" /> 
     <property name="transactionSynchronizationRegistryName" value="java:jboss/TransactionSynchronizationRegistry" /> 
    </bean> 
</beans> 

méthodes de GenericDAO appelées avec anotation @Transactional

package small.business.dao; 

import java.lang.reflect.ParameterizedType; 

import javax.persistence.EntityManager; 

import org.hibernate.Session; 
import org.hibernate.SessionFactory; 
import org.hibernate.exception.GenericJDBCException; 
import org.slf4j.Logger; 
import org.slf4j.LoggerFactory; 
import org.springframework.beans.factory.annotation.Autowired; 

import small.business.domainmodel.interfaces.IElement; 

/** 
* 
* @author 452 
*/ 
public abstract class GenericDAO<E extends IElement<?>> { 

    private static final Logger log = LoggerFactory.getLogger(GenericDAO.class); 

    protected Class<E> entityClass; 

    @Autowired 
    protected EntityManager entityManager; 

    @Autowired 
    protected SessionFactory sessionFactory; 

    @SuppressWarnings("unchecked") 
    public GenericDAO() { 
     entityClass = (Class<E>) ((ParameterizedType) getClass().getGenericSuperclass()).getActualTypeArguments()[0]; 
    } 

    @SuppressWarnings("unchecked") 
    public E getCurrentElement(Long currentElement) { 
     E element = null; 
     try { 
      //element = entityManager.find(entityClass, currentElement); 
      Session session = sessionFactory.getCurrentSession(); 
      //element = (E) session.load(entityClass, currentElement); 
      element = (E) session.get(entityClass, currentElement); 
     } catch (Exception e) { 
      log.error(e.getMessage(), e); 
     } finally { 
     } 
     return element; 
    } 

    public E saveOrUpdate(E currentElement) throws Exception { 
     E result; 
     try { 
      result = entityManager.merge(currentElement); 
     } catch (GenericJDBCException e) { 
      try { 
       result = entityManager.merge(currentElement); 
      } catch (GenericJDBCException ex) { 
       throw new Exception("saveOrUpdate: ", ex); 
      } 
     } 
     return result; 
    } 

    public void remove(E currentElement) throws Exception { 
     E element = entityManager.find(entityClass, currentElement.getId()); 
     entityManager.remove(element); 
    } 
} 

StackTrace:

at java.lang.Thread.run(Thread.java:722) 
     Caused by: java.sql.SQLException: javax.resource.ResourceException: IJ000453: Unable to get managed connection for java:jboss/datasources/ShopDS 
      at org.jboss.jca.adapters.jdbc.WrapperDataSource.getConnection(WrapperDataSource.java:137) 
      at org.hibernate.service.jdbc.connections.internal.DatasourceConnectionProviderImpl.getConnection(DatasourceConnectionProviderImpl.java:141) 
      at org.hibernate.internal.AbstractSessionImpl$NonContextualJdbcConnectionAccess.obtainConnection(AbstractSessionImpl.java:276) 
      at org.hibernate.engine.jdbc.internal.LogicalConnectionImpl.obtainConnection(LogicalConnectionImpl.java:297) 
      ... 161 more 
     Caused by: javax.resource.ResourceException: IJ000453: Unable to get managed connection for java:jboss/datasources/ShopDS 
      at org.jboss.jca.core.connectionmanager.AbstractConnectionManager.getManagedConnection(AbstractConnectionManager.java:390) 
      at org.jboss.jca.core.connectionmanager.tx.TxConnectionManagerImpl.getManagedConnection(TxConnectionManagerImpl.java:368) 
      at org.jboss.jca.core.connectionmanager.AbstractConnectionManager.allocateConnection(AbstractConnectionManager.java:464) 
      at org.jboss.jca.adapters.jdbc.WrapperDataSource.getConnection(WrapperDataSource.java:129) 
      ... 164 more 
     Caused by: javax.resource.spi.RetryableUnavailableException: IJ000653: The pool has been shutdown (MysqlDS,178e455) 
      at org.jboss.jca.core.connectionmanager.pool.mcp.SemaphoreArrayListManagedConnectionPool.getConnection(SemaphoreArrayListManagedConnectionPool.java:264) 
      at org.jboss.jca.core.connectionmanager.pool.AbstractPool.getTransactionNewConnection(AbstractPool.java:495) 
      at org.jboss.jca.core.connectionmanager.pool.AbstractPool.getConnection(AbstractPool.java:374) 
      at org.jboss.jca.core.connectionmanager.AbstractConnectionManager.getManagedConnection(AbstractConnectionManager.java:329) 

JBoss AS 7.1.1, MySql 5, 4 Mise en veille prolongée, Spring 3.2.2

+0

Des anomalies dans votre journal des erreurs MySQL? –

+0

Comment je peux voir ces journaux? Je n'ai aucun dossier mysql-5.1, et Google ne répond pas comment ... – 452

Répondre

0

Essayez également de ssh sur votre application (rhc ssh {appName}) et voyez si vous pouvez vous connecter à la base de données en exécutant "mysql" sur la console. Si nécessaire, essayez de redémarrer la cartouche mysql en utilisant "rhc cartridge restart mysql-5.1 {appName}". +1 sur vérifier votre journal mysql pour les erreurs aussi:
https://openshift.redhat.com/community/faq/how-to-troubleshoot-application-issues-using-logs

+0

Je me connecte via SSH et n'ai pas de dossier mysql-5.1, aussi avec la commande env Je ne vois pas d'OPENSHIFT_MyDBName_DB_LOG_DIR, aussi ~/mysql-5.1/logs/* .log n'existe pas. J'ai lu cet article https://www.openshift.com/page/openshift-environment-variables à propos OPENSHIFT_ _DB_LOG_DIR – 452

+0

ls ~/mysql-5.1/logs/ls : ne peut pas accéder/var/lib/OpenShift/512f76d34382ecafaf00 ___/mysql-5.1/logs /: Pas de tel fichier ou répertoire – 452

+0

Aussi à propos de cette commande "rhc cartouche redémarre mysql-5.1 {appName}", pas de résultat, j'ai force stop, start, restart, le résultat est le même. – 452