DB연결이 잘 안되는것 같습니다.
- 작성자 :
- 오*택
- 작성일 :
- 2013-09-26 22:13:08
- 조회수 :
- 1,413
- 구분 :
- 기타
- 진행상태 :
- 완료
Q
실 서버에 넣고 테스트 중입니다.
그런데 서비스가 잘 된다가 갑자기 페이지를 불러 오는중으로 계속 돌아가면서
페이지가 연결이 안됩니다.
조금 기다렸다가 새로고침 하면 아래와 같은 에러가 납니다.
새로고침 몇번 더 하면 다시 홈페이지가 구동이 됩니다.
혹시나 해서 jdbc 드라이버를 몇개 바꾸어 봤는데 계속 그럼니다.
무엇이 문제 인지 모르겠습니다.
전체 에러로그는 첨부파일로 올렸습니다.
DB 연결은
<jee:jndi-lookup id="dataSource-mysql" jndi-name="jdbc/EgovData" resource-ref="true" />
<jee:jndi-lookup id="dataSource-mysql-cyber" jndi-name="jdbc/EgovDataMysqlCyber" resource-ref="true" />
<jee:jndi-lookup id="dataSource-mysql-ebl" jndi-name="jdbc/EgovDataMysqlEbl" resource-ref="true" />
<jee:jndi-lookup id="dataSource-mysql-slibrary" jndi-name="jdbc/EgovDataMysqlSlibrary" resource-ref="true" />
<jee:jndi-lookup id="dataSource-cubrid-reader" jndi-name="jdbc/EgovDataCubridReader" resource-ref="true" />
<jee:jndi-lookup id="dataSource-cubrid-search" jndi-name="jdbc/EgovDataCubridSearch" resource-ref="true" />
<jee:jndi-lookup id="dataSource-oracle-kolas" jndi-name="jdbc/EgovDataOracleKolas" resource-ref="true" />
로 연결된 상태 입니다.
Request URI: /home.do
Servlet Name: action
Status Code: 200
Message: org.springframework.transaction.CannotCreateTransactionException:
Could not open JDBC Connection for transaction; nested exception is com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure
The last packet successfully received from the server was 8,030,848 milliseconds ago. The last packet sent successfully to the server was 8,030,856 milliseconds ago.
Stack Trace:
org.springframework.jdbc.datasource.DataSourceTransactionManager.doBegin(DataSourceTransactionManager.java:240)
org.springframework.transaction.support.AbstractPlatformTransactionManager.getTransaction(AbstractPlatformTransactionManager.java:371)
org.springframework.transaction.interceptor.TransactionAspectSupport.createTransactionIfNecessary(TransactionAspectSupport.java:335)
org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:105)
org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
org.springframework.aop.aspectj.AspectJAfterThrowingAdvice.invoke(AspectJAfterThrowingAdvice.java:55)
org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:89)
그런데 서비스가 잘 된다가 갑자기 페이지를 불러 오는중으로 계속 돌아가면서
페이지가 연결이 안됩니다.
조금 기다렸다가 새로고침 하면 아래와 같은 에러가 납니다.
새로고침 몇번 더 하면 다시 홈페이지가 구동이 됩니다.
혹시나 해서 jdbc 드라이버를 몇개 바꾸어 봤는데 계속 그럼니다.
무엇이 문제 인지 모르겠습니다.
전체 에러로그는 첨부파일로 올렸습니다.
DB 연결은
<jee:jndi-lookup id="dataSource-mysql" jndi-name="jdbc/EgovData" resource-ref="true" />
<jee:jndi-lookup id="dataSource-mysql-cyber" jndi-name="jdbc/EgovDataMysqlCyber" resource-ref="true" />
<jee:jndi-lookup id="dataSource-mysql-ebl" jndi-name="jdbc/EgovDataMysqlEbl" resource-ref="true" />
<jee:jndi-lookup id="dataSource-mysql-slibrary" jndi-name="jdbc/EgovDataMysqlSlibrary" resource-ref="true" />
<jee:jndi-lookup id="dataSource-cubrid-reader" jndi-name="jdbc/EgovDataCubridReader" resource-ref="true" />
<jee:jndi-lookup id="dataSource-cubrid-search" jndi-name="jdbc/EgovDataCubridSearch" resource-ref="true" />
<jee:jndi-lookup id="dataSource-oracle-kolas" jndi-name="jdbc/EgovDataOracleKolas" resource-ref="true" />
로 연결된 상태 입니다.
Request URI: /home.do
Servlet Name: action
Status Code: 200
Message: org.springframework.transaction.CannotCreateTransactionException:
Could not open JDBC Connection for transaction; nested exception is com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure
The last packet successfully received from the server was 8,030,848 milliseconds ago. The last packet sent successfully to the server was 8,030,856 milliseconds ago.
Stack Trace:
org.springframework.jdbc.datasource.DataSourceTransactionManager.doBegin(DataSourceTransactionManager.java:240)
org.springframework.transaction.support.AbstractPlatformTransactionManager.getTransaction(AbstractPlatformTransactionManager.java:371)
org.springframework.transaction.interceptor.TransactionAspectSupport.createTransactionIfNecessary(TransactionAspectSupport.java:335)
org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:105)
org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
org.springframework.aop.aspectj.AspectJAfterThrowingAdvice.invoke(AspectJAfterThrowingAdvice.java:55)
org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:89)
A
안녕하세요. 오일택님.
DBMS에서 특정 시간 동안 연결된 connection 상에 별도의 request가 없으면, 연결을 강제적으로 끊는 기능을 대부분 가지고 있습니다.
이 기능에 의해 Connection Pool을 사용하고 특정 시간 아무 동작이 없으면 연결을 끊기도록 되어 있습니다.
이에 대한 해결은 Connection Pool 기능 상에 특정 시간마다 dummy query (ex: select 1 from dual 등)를 호출하는 기능을 설정해 놓으셔야 합니다.
JNDI를 사용하시는 경우라 사용하시는 WAS의 설명 문서를 참조하셔서 설정하시면 되실 것 같습니다.
그럼, 즐거운 하루되십시오.
감사합니다.
DBMS에서 특정 시간 동안 연결된 connection 상에 별도의 request가 없으면, 연결을 강제적으로 끊는 기능을 대부분 가지고 있습니다.
이 기능에 의해 Connection Pool을 사용하고 특정 시간 아무 동작이 없으면 연결을 끊기도록 되어 있습니다.
이에 대한 해결은 Connection Pool 기능 상에 특정 시간마다 dummy query (ex: select 1 from dual 등)를 호출하는 기능을 설정해 놓으셔야 합니다.
JNDI를 사용하시는 경우라 사용하시는 WAS의 설명 문서를 참조하셔서 설정하시면 되실 것 같습니다.
그럼, 즐거운 하루되십시오.
감사합니다.