Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / CannotCreateTransactionException: Could not open JDBC Connection for transaction / 9 сообщений из 9, страница 1 из 1
27.03.2013, 13:16:14
    #38200369
Timoshenko Arthur
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CannotCreateTransactionException: Could not open JDBC Connection for transaction
Добрый день!
Последнее время возникает ошибка получения соединения.
Опишу ситуацию.
Есть сервер, где крутится томкат. На нем крутятся сервисы.
Ночью пропадает коннект, что ведет к ошибке
Код: 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
27.03.2013, 13:43:22
    #38200421
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CannotCreateTransactionException: Could not open JDBC Connection for transaction
stacktrace приведите. Довольно странно что пул умудрился вернуть null.
...
Рейтинг: 0 / 0
27.03.2013, 13:45:53
    #38200428
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CannotCreateTransactionException: Could not open JDBC Connection for transaction
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
27.03.2013, 13:46:24
    #38200430
Timoshenko Arthur
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CannotCreateTransactionException: Could not open JDBC Connection for transaction
Код: 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
27.03.2013, 13:49:25
    #38200441
Timoshenko Arthur
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CannotCreateTransactionException: Could not open JDBC Connection for transaction
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
27.03.2013, 14:00:21
    #38200458
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CannotCreateTransactionException: Could not open JDBC Connection for transaction
Timoshenko ArthurТо есть получается, что нет временного ожидания и он сразу возвращает NULL когда(судя по моему конфигу) есть 5 подключений?
Странно, конечно. Доожен вешаться до освобождения соединения по логике.
...
Рейтинг: 0 / 0
27.03.2013, 14:01:28
    #38200459
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CannotCreateTransactionException: Could not open JDBC Connection for transaction
...
Рейтинг: 0 / 0
27.03.2013, 14:22:27
    #38200499
Timoshenko Arthur
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CannotCreateTransactionException: Could not open JDBC Connection for transaction
BlazkowiczTimoshenko ArthurТо есть получается, что нет временного ожидания и он сразу возвращает NULL когда(судя по моему конфигу) есть 5 подключений?
Странно, конечно. Доожен вешаться до освобождения соединения по логике.
По идее да. Должен висеть и ждать((
Увеличим MaxLimit и выставлю ConnectionWaitTimeout=600. Посмотрим, что получится.
...
Рейтинг: 0 / 0
28.03.2013, 10:35:04
    #38201756
Timoshenko Arthur
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CannotCreateTransactionException: Could not open JDBC Connection for transaction
Спасибо большое за помощь.
Ошибка пока что не возникала.
Установил 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
Форумы / Java [игнор отключен] [закрыт для гостей] / CannotCreateTransactionException: Could not open JDBC Connection for transaction / 9 сообщений из 9, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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