powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / CannotCreateTransactionException: Could not open JDBC Connection for transaction
9 сообщений из 9, страница 1 из 1
CannotCreateTransactionException: Could not open JDBC Connection for transaction
    #38200369
Timoshenko Arthur
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день!
Последнее время возникает ошибка получения соединения.
Опишу ситуацию.
Есть сервер, где крутится томкат. На нем крутятся сервисы.
Ночью пропадает коннект, что ведет к ошибке
Код: java
1.
2.
Processing of HttpInvokerServiceExporter remote call resulted in fatal exception: com.test.MainTest
org.springframework.transaction.CannotCreateTransactionException: Could not open JDBC Connection for transaction; nested exception is java.lang.IllegalArgumentException: Connection must not be null



Файл context.xml(Самого сервиса), где описывается коннект
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
<?xml version="1.0" encoding="UTF-8"?>
<Context antiJARLocking="true" path="/testdao">
    <Resource auth="Container" 
    connectionCachingEnabled="true" 
    connectionCacheProperties="MinLimit=1, MaxLimit=5, InitialLimit=1, AbandonedConnectionTimeout=300, ValidateConnection=true, TimeToLiveTimeout=300, InactivityTimeout=300, removeAbandoned=true, removeAbandonedTimeout=60, logAbandoned=true"
    factory="oracle.jdbc.pool.OracleDataSourceFactory" 
    name="jdbc/test" 
    password="test" 
    type="oracle.jdbc.pool.OracleDataSource" 
    url="jdbc:oracle:thin:@127.0.0.1:1521:MYBASE"
    user="fppays"/>
</Context>



Проблема в том, что в логах томката подробной инфы нет. Есть идеи у кого нибудь, почему вдруг может пропадать вот так коннект?
P.S.: Есть варианты, что превышается число активных сессий, из за этого может быть? И как можно получить более детальное логгирование попытки соединения с БД?
...
Рейтинг: 0 / 0
CannotCreateTransactionException: Could not open JDBC Connection for transaction
    #38200421
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
stacktrace приведите. Довольно странно что пул умудрился вернуть null.
...
Рейтинг: 0 / 0
CannotCreateTransactionException: Could not open JDBC Connection for transaction
    #38200428
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RTFMConnectionWaitTimeout

Specifies cache behavior when a connection is requested and there are already MaxLimit connections active. If ConnectionWaitTimeout is greater than zero, then each connection request waits for the specified number of seconds or until a connection is returned to the cache. If no connection is returned to the cache before the timeout elapses, then the connection request returns null.

Default: 0 (no timeout)
...
Рейтинг: 0 / 0
CannotCreateTransactionException: Could not open JDBC Connection for transaction
    #38200430
Timoshenko Arthur
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
WARNING: Processing of HttpInvokerServiceExporter remote call resulted in fatal exception: com.pb.iac.xlib.dao.IacDaoLocal.findById
org.springframework.transaction.CannotCreateTransactionException: Could not open JDBC Connection for transaction; nested exception is java.lang.IllegalArgumentException: Connection must not be null
	at org.springframework.jdbc.datasource.DataSourceTransactionManager.doBegin(DataSourceTransactionManager.java:240)
	at org.springframework.transaction.support.AbstractPlatformTransactionManager.getTransaction(AbstractPlatformTransactionManager.java:371)
	at org.springframework.transaction.interceptor.TransactionAspectSupport.createTransactionIfNecessary(TransactionAspectSupport.java:335)
	at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:105)
	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
	at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:202)
	at $Proxy159.findById(Unknown Source)
	at com.pb.iac.fppay.dao.httpremote.PayopDaoHttpImpl.findById(PayopDaoHttpImpl.java:154)
	at sun.reflect.GeneratedMethodAccessor73.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:616)
	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:309)
	at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:183)
	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150)
	at org.springframework.remoting.support.RemoteInvocationTraceInterceptor.invoke(RemoteInvocationTraceInterceptor.java:77)
	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
	at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:202)
	at $Proxy177.findById(Unknown Source)
	at sun.reflect.GeneratedMethodAccessor76.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:616)
	at org.springframework.remoting.support.RemoteInvocation.invoke(RemoteInvocation.java:205)
	at org.springframework.remoting.support.DefaultRemoteInvocationExecutor.invoke(DefaultRemoteInvocationExecutor.java:38)
	at org.springframework.remoting.support.RemoteInvocationBasedExporter.invoke(RemoteInvocationBasedExporter.java:78)
	at org.springframework.remoting.support.RemoteInvocationBasedExporter.invokeAndCreateResult(RemoteInvocationBasedExporter.java:114)
	at org.springframework.remoting.httpinvoker.HttpInvokerServiceExporter.handleRequest(HttpInvokerServiceExporter.java:73)
	at org.springframework.web.servlet.mvc.HttpRequestHandlerAdapter.handle(HttpRequestHandlerAdapter.java:49)
	at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:790)
	at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:719)
	at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:669)
	at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:585)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:641)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:224)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:169)
	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
	at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:927)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
	at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:987)
	at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:579)
	at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:307)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
	at java.lang.Thread.run(Thread.java:679)
Caused by: java.lang.IllegalArgumentException: Connection must not be null
	at org.springframework.util.Assert.notNull(Assert.java:112)
	at org.springframework.jdbc.datasource.SimpleConnectionHandle.<init>(SimpleConnectionHandle.java:40)
	at org.springframework.jdbc.datasource.ConnectionHolder.<init>(ConnectionHolder.java:75)
	at org.springframework.jdbc.datasource.DataSourceTransactionManager.doBegin(DataSourceTransactionManager.java:206)
	... 48 more
...
Рейтинг: 0 / 0
CannotCreateTransactionException: Could not open JDBC Connection for transaction
    #38200441
Timoshenko Arthur
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
BlazkowiczRTFMConnectionWaitTimeout

Specifies cache behavior when a connection is requested and there are already MaxLimit connections active. If ConnectionWaitTimeout is greater than zero, then each connection request waits for the specified number of seconds or until a connection is returned to the cache. If no connection is returned to the cache before the timeout elapses, then the connection request returns null.

Default: 0 (no timeout)

То есть получается, что нет временного ожидания и он сразу возвращает NULL когда(судя по моему конфигу) есть 5 подключений?
...
Рейтинг: 0 / 0
CannotCreateTransactionException: Could not open JDBC Connection for transaction
    #38200458
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Timoshenko ArthurТо есть получается, что нет временного ожидания и он сразу возвращает NULL когда(судя по моему конфигу) есть 5 подключений?
Странно, конечно. Доожен вешаться до освобождения соединения по логике.
...
Рейтинг: 0 / 0
CannotCreateTransactionException: Could not open JDBC Connection for transaction
    #38200459
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
CannotCreateTransactionException: Could not open JDBC Connection for transaction
    #38200499
Timoshenko Arthur
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
BlazkowiczTimoshenko ArthurТо есть получается, что нет временного ожидания и он сразу возвращает NULL когда(судя по моему конфигу) есть 5 подключений?
Странно, конечно. Доожен вешаться до освобождения соединения по логике.
По идее да. Должен висеть и ждать((
Увеличим MaxLimit и выставлю ConnectionWaitTimeout=600. Посмотрим, что получится.
...
Рейтинг: 0 / 0
CannotCreateTransactionException: Could not open JDBC Connection for transaction
    #38201756
Timoshenko Arthur
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо большое за помощь.
Ошибка пока что не возникала.
Установил MaxLimit и ConnectionWaitTimeout.
Пока что соединение стабильно и не падает.
В итоге получился вот такой конфиг(может, кому-то надо):
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
<?xml version="1.0" encoding="UTF-8"?>
<Context antiJARLocking="true" path="/testdao">
    <Resource auth="Container" 
    connectionCachingEnabled="true" 
    connectionCacheProperties="MinLimit=1, MaxLimit=10000, InitialLimit=0, AbandonedConnectionTimeout=300, ValidateConnection=true, ConnectionWaitTimeout=600, TimeToLiveTimeout=300, InactivityTimeout=300, removeAbandoned=true, removeAbandonedTimeout=60, logAbandoned=true"
    factory="oracle.jdbc.pool.OracleDataSourceFactory" 
    name="jdbc/test" 
    password="test" 
    type="oracle.jdbc.pool.OracleDataSource" 
    url="jdbc:oracle:thin:@127.0.0.1:1521:MYBASE"
    user="fppays"/>
</Context>
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / CannotCreateTransactionException: Could not open JDBC Connection for transaction
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]