apache commons dbcp connection pool Fehler: Timeout waiting for idle-Objekt in eine Spring + Hibernate-app mit Feder-Transaktionen
Habe ich gelesen, die durch verschiedene Stackover flow Fragen und Inhalte auf die web -, auf ähnlichen problem. Aber ich konnte Sie nicht finden nützliche Hinweise, die mir erlauben würde zu verengen auf mein problem. Hier ist mein Anwendungsfall die Ergebnisse in diesen Fehler.
2 Personen Campus und Programme --> Eins-zu-viele-relation von Campus
Programm und One-to-One aus dem Programm zu den Campus.ich versuche zu erstellen die mehrere Programme im Zusammenhang mit Hochschulen. Jeder
einfügen erstellt ein neues Programm mit denselben Daten an, und befestigen Sie es an eine
verschiedene(einzigartige) campus. zB. Java-101-Kurs angeboten, in New York,
San Francisco, Dallas, Chicago, erstellen Sie ein neues Programm für jeden
campus.Ist es kein problem anhaltenden single-Programm. auch gibt es kein Problem
beibehalten ein Programm für bis zu 46 Campus, aber dieser Fehler zeigt sich für die
die 47th campus.
Hier ist die config für meine Anwendung:
Eigenschaften Datei:
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
Hier ist, wie meine spring-hibernate config sieht aus wie
<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" />
Hier ist, wie meine Bewerbung fließen sieht aus wie
ProgramController -> ProgramService -> ProgramDAO
Service-Klasse wird kommentiert mit: @Transactional(propagation=Propagation.REQUIRED, isolation=Isolation.READ_COMMITTED)
DAO-Klasse wird kommentiert mit: @Transactional(propagation=Propagation.MANDATORY, isolation=Isolation.READ_COMMITTED)
Hier ist das Stück von der Steuerung
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);
Hier ist ein Ausschnitt aus dem Dienst
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;
Hier ist ein Ausschnitt aus dem 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();
}
}
habe versucht, mit beiden Methoden zu bestehen, aber dasselbe Ergebnis.
Hier wird der volle stack-trace
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)
Dies ist der einzige Weg, ich bekomme Sitzung aus dem Ruhezustand:
@Transactional(propagation=Propagation.NOT_SUPPORTED)
protected Session getCurrentSession(){
if(this.sessionFactory == null){
log.error("SessionFactory is null");
}
return this.sessionFactory.getCurrentSession();
}
Auch pro meine app meldet, die code-Ausführung nicht machen, es service-Schicht. Es wirft einen Fehler beim looping in der Steuerung zum Auffüllen der Liste der Programm-entites (siehe controller-snippet)
Ich wäre dankbar, wenn jemand kann mich in die richtige Richtung.
nun wurde es zufällig in einem bestimmten Umfang. Zum Zeitpunkt der Entdeckung warf Fehler für 20 Personen. Dann habe ich überarbeitete meinen code in den controller zu bewegen-der db liest, für den Bereich des Studiums und der Konzentration außerhalb der Schleife, da Sie nur abgerufen werden, sobald. Jedesmal, wenn der Eingang ist anders
InformationsquelleAutor Dhwanit | 2013-09-25
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich sehe, Sie hatten eine pool-Einstellung, die überprüft die Verbindung auf zu leihen, und von der stack-trace, ich kann sehen, das die Validierung fehlgeschlagen ist (scheint timeout). Es gibt 2 mögliche Ursachen die ich mir denken kann:
Netzwerk-Verbindung zwischen Ihrer app und db server kaputt war. Dies könnte durch die Verbindung verloren, firewall-Einstellung ändern, veraltete DNS-Einträge, db-server plötzlich stirbt, oder sogar router hatte eine Einstellung zu töten, verdächtige tcp-socket (passierte uns einmal)
Den pool laufen aus der verfügbaren Verbindung. Dies ist eher unwahrscheinlich, da würde ich annehmen, die stack-trace geben würde, die mehr Hinweis, aber es lohnt sich, die überwachung Ihres Pools und überprüfen Sie die Anzahl der verfügbaren conn auf die Zeit, wenn ein problem auftreten,
nicht unbedingt so, ich habe festgestellt Fall, wo meine
localhost
dns-lookup nicht funktioniertirgendeine Idee wie die überwachung des thread-pool?
InformationsquelleAutor gerrytan
Ich lief in einer ähnlichen Fehler heute.
Habe ich eine ähnliche Einstellung: "datasource.maxactive=50", was bedeutet, nicht mehr als 50 verbindungen gleichzeitig. Habe ich n threads, die jeweils eine Verbindung verwendet. Wenn n 50 oder schließen, wird diese Ausnahme eine Menge passiert. Es gibt ein paar Dinge, die getan werden kann; 2, die ich als hilfreich gefunden:
Was ich sehe, diese beiden geben dem pool die Zeit zu erinnern verbindungen und reduziert den timeout.
InformationsquelleAutor oVo
Hatte ich das gleiche Problem wie wir hatte, Rampe bis auf die Verwendung der Anwendung. Erhöhte die Verbindung pool und Problem gelöst habe.
InformationsquelleAutor MukeshKoshyM