Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java EE (J2EE) и Spring > Срочно нужна помощь. Cannot get a connection, pool


Автор: kkin 15.10.2010, 08:15
Доброе время форумчане. Возникла очень серьезная проблема которую необходимо решить.

В общем создаю соединение с бд 
Код

                env=(Context)new InitialContext().lookup("java:comp/env");
                        pool=(DataSource)env.lookup("jdbc/MySQLDB");
                        if(pool==null)
                            throw new ServletException("mysql-payment - is unknown DataSource");
                        db=pool.getConnection();
                    } catch (Exception e) {
                        logger.error("DB connect FALSE!" + e);
                        
                    }
                    
                    try{

                        далее идет sql запрос.
                    }
            

Проблема в следующем все работает какое то время где то сутки потом вылетает такая ошибка 

 DB connect FALSE!org.apache.tomcat.dbcp.dbcp.SQLNestedException: Cannot get a connection, pool error Timeout waiting for idle object at com.......

так понял освобождением пула должен заниматься томкат.
вот его конфиги 
Код

<?xml version='1.0' encoding='utf-8'?>

<!-- The contents of this file will be loaded for each web application -->
<Context  path="/Content" docBase="Content"
        debug="5" reloadable="true" crossContext="true">

   
   <Resource name="jdbc/MySQLDB" auth="Container" type="javax.sql.DataSource" 
     username="test" password="test" driverClassName="com.mysql.jdbc.Driver"
     url="jdbc:mysql://127.0.0.1/paymentDB?autoReconnect=true"
     maxActive="100" maxIdle="30" maxWait="10000"
     characterEncoding="cp1251"
     autoReconnect="true"
     defaultAutoCommit="true"
     testOnBorrow="true"
     testWhileIdle="true"
     timeBeatweenEvictionRunsMillis="10000"
     minEvictableIdleTimeMillis="60000"
     validationQuery="Select 1"
     />


</Context>


web.xml 

<resource-ref>
      <description>DB Connection</description>
      <res-ref-name>jdbc/MySQLDB</res-ref-name>
      <res-type>javax.sql.DataSource</res-type>
      <res-auth>Container</res-auth>
  </resource-ref>



Я наверное догадываюсь в чем проблема у меня ни где нет db.close();

Может ли это влиять?

Автор: Skipy 15.10.2010, 10:40
Имхо, в первую очередь это и влияет. Если я правильно помню принципы работы пула, то по закрытию соединения оно возвращается в пул. Если не закрываете - не возвращается.

Автор: kkin 15.10.2010, 11:02
Закрыл соединение ждем сутки.  надеюсь все получиться 

Автор: kkin 19.10.2010, 06:42
Уже работает несколько суток. Все дело было в незакрытых соединениях .

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)