apache commons dbcp pool de connexion erreur: Délai d'attente pour objet inactif dans un Spring + Hibernate application à l'aide de Printemps Transactions
J'ai lu à travers divers Stackover flux de Questions et de contenu sur le web sur le même problème. Cependant, je ne pourrais pas trouver des conseils utiles qui me permettrait d'affiner sur mon problème. Ici, c'est mon cas d'utilisation qui entraîne cette erreur.
2 d'entités du Campus et des Programmes --> Un-à-plusieurs rapport du Campus de
Programme de et un-à-Un à partir du Programme du Campus.je suis en train de créer plusieurs programmes associés avec des campus. Chaque
insérez permettra de créer un nouveau programme avec les mêmes détails et de l'attacher à un
différents(unique) campus. par exemple. Java 101 Cours offert à New York,
San Francisco, Dallas, Chicago va créer un nouveau programme pour chaque
campus.Il n'y a pas de problème persistant seul programme. aussi il n'y a pas de problème
la persistance d'un programme de jusqu'à 46 campus mais cette erreur s'affiche pour
la 47e session de la le campus.
Voici la config de mon application:
Fichier de propriétés:
datasource.classname=com.mysql.jdbc.Driver
datasource.url=jdbc:mysql://localhost:3306/edu
datasource.username=xxx
datasource.password=xxx123
datasource.initialsize=15
datasource.maxactive=50
datasource.maxidle=15
datasource.minidle=5
datasource.maxwait=10000
datasource.dialect=org.hibernate.dialect.MySQLDialect
datasource.validationquery =select 1
datasource.minEvictableIdleTimeMillis = 180000
datasource.timeBetweenEvictionRunsMillis = 180000
hibernate.batchsize=30
Voici comment mon spring-hibernate config ressemble
<context:property-placeholder location="classpath:database.properties" order="1" ignore-unresolvable="true" />
<context:property-placeholder location="classpath:app.properties" order="2" ignore-unresolvable="true" />
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName" value="${datasource.classname}" />
<property name="url" value="${datasource.url}" />
<property name="username" value="${datasource.username}" />
<property name="password" value="${datasource.password}" />
<property name="initialSize" value="${datasource.initialsize}" />
<property name="maxActive" value="${datasource.maxactive}" />
<property name="maxIdle" value="${datasource.maxidle}" />
<property name="minIdle" value="${datasource.minidle}" />
<property name="maxWait" value="${datasource.maxwait}" />
<property name="minEvictableIdleTimeMillis" value="${datasource.minEvictableIdleTimeMillis}" />
<property name="timeBetweenEvictionRunsMillis" value="${datasource.timeBetweenEvictionRunsMillis}" />
<property name="validationQuery" value="${datasource.validationquery}" />
<property name="testOnBorrow" value="true" />
<property name="removeAbandoned" value="true"/>
<property name="removeAbandonedTimeout" value="60"/>
<property name="logAbandoned" value="true"/>
</bean>
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">${datasource.dialect}</prop>
<prop key="hibernate.show_sql">false</prop>
<prop key="hibernate.format_sql">true</prop>
<prop key="hibernate.batch_size">${hibernate.batchsize}</prop>
<prop key="hibernate.current_session_context_class">org.springframework.orm.hibernate3.SpringSessionContext</prop>
<prop key="hibernate.cache.use_second_level_cache">true</prop>
<prop key="hibernate.cache.use_query_cache">true</prop>
<prop key="hibernate.cache.provider_configuration_file_resource_path">/WEB-INF/ehcache-entity.xml</prop>
<prop key="hibernate.cache.region.factory_class">net.sf.ehcache.hibernate.EhCacheRegionFactory</prop>
<prop key="hibernate.generate_statistics">false</prop>
<!-- <prop key="hibernate.connection.release_mode">auto</prop> -->
</props>
</property>
<property name="packagesToScan">
<list>
<value>com.edapp.core</value>
<value>com.edapp.data.engine</value>
<value>com.edapp.service.engine</value>
</list>
</property>
</bean>
<bean id="transactionManager"
class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory" />
</bean>
<aop:config proxy-target-class="true"/> <!-- necessary to call methods on classes than proxies -->
<context:annotation-config />
<context:component-scan base-package="com.edapp" />
<!-- transaction settings -->
<tx:annotation-driven transaction-manager="transactionManager" />
Voici comment mon flux d'application ressemble
ProgramController -> ProgramService -> ProgramDAO
Service de classe est annotée avec: @Transactional(propagation=Propagation.REQUIRED, isolation=Isolation.READ_COMMITTED)
DAO classe est annotée avec: @Transactional(propagation=Propagation.MANDATORY, isolation=Isolation.READ_COMMITTED)
Voici le morceau de Contrôleur de
List<String> campuses = Arrays.asList(gson.fromJson(campusesJSArray, String[].class));
if(campuses.size() > 0){
List<Program> programList = new ArrayList<Program>();
AreaOfStudy aos = this.areaOfStudyService.getById(areaOfStudyId);
Concentration con = this.concentrationService.getById(concentrationId);
for(String c : campuses){
Long campusid = Long.parseLong(c);
Program p = new Program();
Campus campus = this.campusService.getById(campusid);
if(campus != null){
System.out.println(campus.toString());
p.setName(name);
p.setCampus(campus);
p.setCode(code);
p.setLevel(level);
p.getCampus().getPrograms().add(p);
p.setAreaOfStudy(aos);
p.setConcentration(con);
p.setActive(true);
}
programList.add(p);
}
((ProgramServiceImpl)programService).saveOrUpdate(programList);
Voici un extrait de Service
if(programList == null){
log.error("ProgramList cannot be null");
return null;
}
Map<Integer, String> errors = new HashMap<Integer, String>();
log.info("Saving program list of size:"+programList.size());
for(int i=0; i<programList.size();i++){
try{
this.saveOrUpdate(programList.get(i));
}catch(HibernateException e){
errors.put(i, "error");
}
}
return errors;
Voici un extrait de la DAO:
@Transactional(isolation=Isolation.REPEATABLE_READ)
public void create(final T entity) {
if(entity == null){
IllegalArgumentException e = new IllegalArgumentException();
throw(e);
}
Session session = this.sessionFactory.getCurrentSession();
try{
session.persist(entity);
session.flush();
}catch(ConstraintViolationException cve){
log.error("School with same code already exists "+ this.clazz.getName(),cve);
throw cve;
}catch(HibernateException e){
log.error("Error persisting entity of type "+ this.clazz.getName(),e);
throw new HibernateException(e);
}finally{
session.clear();
}
}
Batchsize = 30
@Transactional(isolation=Isolation.REPEATABLE_READ)
public void create(List<T> entityList){
if(entityList == null){
IllegalArgumentException e = new IllegalArgumentException();
throw(e);
}
Session session = this.sessionFactory.getCurrentSession();
try{
for(int i=0;i<entityList.size();i++){
T entity = entityList.get(i);
if(entity == null){
log.error("List "+ this.clazz.getName() + " of cannot contain null");
throw new NullPointerException("List "+ this.clazz.getName() + " of cannot contain null");
}
session.persist(entity);
if(i% this.batchSize == 0){
session.flush();
session.clear();
}
}
}catch(HibernateException e){
log.error("Error persisting entity of type "+ this.clazz.getName(),e);
throw new HibernateException(e);
}finally{
session.flush();
session.clear();
}
}
essayé d'utiliser les deux méthodes de persister, mais même résultat.
On a la trace de la pile
org.springframework.web.util.NestedServletException: Request processing failed; nested exception is org.springframework.transaction.CannotCreateTransactionException: Could not open Hibernate Session for transaction; nested exception is org.hibernate.exception.GenericJDBCException: Cannot open connection
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:932)
org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:827)
javax.servlet.http.HttpServlet.service(HttpServlet.java:647)
org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:801)
javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:233)
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
root cause
org.springframework.transaction.CannotCreateTransactionException: Could not open Hibernate Session for transaction; nested exception is org.hibernate.exception.GenericJDBCException: Cannot open connection
org.springframework.orm.hibernate3.HibernateTransactionManager.doBegin(HibernateTransactionManager.java:597)
org.springframework.transaction.support.AbstractPlatformTransactionManager.getTransaction(AbstractPlatformTransactionManager.java:372)
org.springframework.transaction.interceptor.TransactionAspectSupport.createTransactionIfNecessary(TransactionAspectSupport.java:329)
org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:105)
org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:631)
com.tr.leadgen.service.engine.CampusServiceImpl$$EnhancerByCGLIB$$68d579ad.getById(<generated>)
com.tr.leadgen.web.edu.controllers.ProgramController.add(ProgramController.java:74)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
java.lang.reflect.Method.invoke(Method.java:597)
org.springframework.web.method.support.InvocableHandlerMethod.invoke(InvocableHandlerMethod.java:219)
org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:132)
org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:104)
org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandleMethod(RequestMappingHandlerAdapter.java:745)
org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:686)
org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:80)
org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:925)
org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:856)
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:920)
org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:827)
javax.servlet.http.HttpServlet.service(HttpServlet.java:647)
org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:801)
javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:233)
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
root cause
org.hibernate.exception.GenericJDBCException: Cannot open connection
org.hibernate.exception.SQLStateConverter.handledNonSpecificException(SQLStateConverter.java:140)
org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:128)
org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:66)
org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:52)
org.hibernate.jdbc.ConnectionManager.openConnection(ConnectionManager.java:449)
org.hibernate.jdbc.ConnectionManager.getConnection(ConnectionManager.java:167)
org.hibernate.jdbc.JDBCContext.connection(JDBCContext.java:160)
org.hibernate.transaction.JDBCTransaction.begin(JDBCTransaction.java:81)
org.hibernate.impl.SessionImpl.beginTransaction(SessionImpl.java:1473)
org.springframework.orm.hibernate3.HibernateTransactionManager.doBegin(HibernateTransactionManager.java:556)
org.springframework.transaction.support.AbstractPlatformTransactionManager.getTransaction(AbstractPlatformTransactionManager.java:372)
org.springframework.transaction.interceptor.TransactionAspectSupport.createTransactionIfNecessary(TransactionAspectSupport.java:329)
org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:105)
org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:631)
com.tr.leadgen.service.engine.CampusServiceImpl$$EnhancerByCGLIB$$68d579ad.getById(<generated>)
com.tr.leadgen.web.edu.controllers.ProgramController.add(ProgramController.java:74)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
java.lang.reflect.Method.invoke(Method.java:597)
org.springframework.web.method.support.InvocableHandlerMethod.invoke(InvocableHandlerMethod.java:219)
org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:132)
org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:104)
org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandleMethod(RequestMappingHandlerAdapter.java:745)
org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:686)
org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:80)
org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:925)
org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:856)
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:920)
org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:827)
javax.servlet.http.HttpServlet.service(HttpServlet.java:647)
org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:801)
javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:233)
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
root cause
org.apache.commons.dbcp.SQLNestedException: Cannot get a connection, pool error Timeout waiting for idle object
org.apache.commons.dbcp.PoolingDataSource.getConnection(PoolingDataSource.java:114)
org.apache.commons.dbcp.BasicDataSource.getConnection(BasicDataSource.java:1044)
org.springframework.orm.hibernate3.LocalDataSourceConnectionProvider.getConnection(LocalDataSourceConnectionProvider.java:83)
org.hibernate.jdbc.ConnectionManager.openConnection(ConnectionManager.java:446)
org.hibernate.jdbc.ConnectionManager.getConnection(ConnectionManager.java:167)
org.hibernate.jdbc.JDBCContext.connection(JDBCContext.java:160)
org.hibernate.transaction.JDBCTransaction.begin(JDBCTransaction.java:81)
org.hibernate.impl.SessionImpl.beginTransaction(SessionImpl.java:1473)
org.springframework.orm.hibernate3.HibernateTransactionManager.doBegin(HibernateTransactionManager.java:556)
org.springframework.transaction.support.AbstractPlatformTransactionManager.getTransaction(AbstractPlatformTransactionManager.java:372)
org.springframework.transaction.interceptor.TransactionAspectSupport.createTransactionIfNecessary(TransactionAspectSupport.java:329)
org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:105)
org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:631)
com.tr.leadgen.service.engine.CampusServiceImpl$$EnhancerByCGLIB$$68d579ad.getById(<generated>)
com.tr.leadgen.web.edu.controllers.ProgramController.add(ProgramController.java:74)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
java.lang.reflect.Method.invoke(Method.java:597)
org.springframework.web.method.support.InvocableHandlerMethod.invoke(InvocableHandlerMethod.java:219)
org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:132)
org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:104)
org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandleMethod(RequestMappingHandlerAdapter.java:745)
org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:686)
org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:80)
org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:925)
org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:856)
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:920)
org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:827)
javax.servlet.http.HttpServlet.service(HttpServlet.java:647)
org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:801)
javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:233)
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
root cause
java.util.NoSuchElementException: Timeout waiting for idle object
org.apache.commons.pool.impl.GenericObjectPool.borrowObject(GenericObjectPool.java:1174)
org.apache.commons.dbcp.AbandonedObjectPool.borrowObject(AbandonedObjectPool.java:79)
org.apache.commons.dbcp.PoolingDataSource.getConnection(PoolingDataSource.java:106)
org.apache.commons.dbcp.BasicDataSource.getConnection(BasicDataSource.java:1044)
org.springframework.orm.hibernate3.LocalDataSourceConnectionProvider.getConnection(LocalDataSourceConnectionProvider.java:83)
org.hibernate.jdbc.ConnectionManager.openConnection(ConnectionManager.java:446)
org.hibernate.jdbc.ConnectionManager.getConnection(ConnectionManager.java:167)
org.hibernate.jdbc.JDBCContext.connection(JDBCContext.java:160)
org.hibernate.transaction.JDBCTransaction.begin(JDBCTransaction.java:81)
org.hibernate.impl.SessionImpl.beginTransaction(SessionImpl.java:1473)
org.springframework.orm.hibernate3.HibernateTransactionManager.doBegin(HibernateTransactionManager.java:556)
org.springframework.transaction.support.AbstractPlatformTransactionManager.getTransaction(AbstractPlatformTransactionManager.java:372)
org.springframework.transaction.interceptor.TransactionAspectSupport.createTransactionIfNecessary(TransactionAspectSupport.java:329)
org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:105)
org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:631)
com.tr.leadgen.service.engine.CampusServiceImpl$$EnhancerByCGLIB$$68d579ad.getById(<generated>)
com.tr.leadgen.web.edu.controllers.ProgramController.add(ProgramController.java:74)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
java.lang.reflect.Method.invoke(Method.java:597)
org.springframework.web.method.support.InvocableHandlerMethod.invoke(InvocableHandlerMethod.java:219)
org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:132)
org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:104)
org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandleMethod(RequestMappingHandlerAdapter.java:745)
org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:686)
org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:80)
org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:925)
org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:856)
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:920)
org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:827)
javax.servlet.http.HttpServlet.service(HttpServlet.java:647)
org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:801)
javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:233)
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
C'est la seule manière pour moi de la session de mise en veille prolongée:
@Transactional(propagation=Propagation.NOT_SUPPORTED)
protected Session getCurrentSession(){
if(this.sessionFactory == null){
log.error("SessionFactory is null");
}
return this.sessionFactory.getCurrentSession();
}
Aussi par mon application journaux, exécution de code à ne pas se rendre à la couche de service. Elle lève une erreur lors de la boucle dans le contrôleur de remplir la liste de programme d'entités (voir contrôleur extrait)
Je serais reconnaissant si quelqu'un peut me pointer dans la bonne direction.
eh bien, c'était aléatoire, dans une certaine mesure. Au moment de sa découverte, il a jeté erreur de 20 entités. Ensuite, j'ai refait mon code dans le contrôleur pour déplacer le db lit pour la Zone de l'Étude et de la Concentration à l'extérieur de la boucle, car ils sont nécessaires à l'extraction d'une fois. À chaque fois que l'entrée est différente
OriginalL'auteur Dhwanit | 2013-09-25
Vous devez vous connecter pour publier un commentaire.
Je vois vous avez eu une piscine qui valide la connexion à emprunter, et à partir de la trace de la pile, je peux voir cette validation a échoué (semble timeout). Il y a 2 causes possibles je pense:
Connexion réseau entre votre application et le serveur de base de données a été brisé. Cela pourrait être dû à la perte de connexion, pare-feu, les paramètres du changement, obsolètes entrées DNS, serveur de base de données meurt subitement, ou même routeur a un réglage pour tuer les suspects socket tcp (qui nous est arrivé une fois)
La piscine exécuter de connexion. C'est plutôt rare, car je suppose que la trace de la pile, permettrait de donner plus d'indice, mais il vaut la peine de suivi de votre piscine et de vérifier le nombre de conn au moment où le problème se produit
pas forcément, j'ai rencontré des cas où mon
localhost
recherche dns ne fonctionne pasaucune idée de la façon de surveiller le pool de threads?
OriginalL'auteur gerrytan
Je suis tombé sur une erreur similaire aujourd'hui.
J'ai un paramètre similaire: "source de données.maxactive=50", ce qui signifie pas de plus de 50 connexions à la fois. Je n threads, chacun utilise une connexion. Lorsque n est de 50 ou de fermer, cette exception se produit souvent. Il y a quelques choses qui peut être fait; 2 que j'ai trouvé utile:
De ce que je vois, ces deux donnent sur la piscine de temps pour se rappeler les connexions et réduit le délai d'attente.
OriginalL'auteur oVo
J'ai eu le même problème que nous avons eu de la rampe sur l'utilisation de l'application. Augmenté le pool de connexion et d'émettre ai résolu.
OriginalL'auteur MukeshKoshyM