2010. 1. 25. 17:41
[JDBC] java.sql.SQLException: Connection has already been closed WebLogic/JDBC2010. 1. 25. 17:41
<Error> <HTTP> <101017> <[ServletContext(id=10303
87,name=DefaultWebApp_myserver,context-path=)] Root cause of ServletException
java.sql.SQLException: Connection has already been closed.
at weblogic.jdbc.pool.Connection.checkIfClosed(Connection.java:68)
at weblogic.jdbc.pool.ResultSet.close(ResultSet.java:186)
...
위와 같은 에러가 날 수 있는 한가지 가능성은 JDBC Connection 변수를 다음과 같이 static으로 선언한
경우이다.
===
:
<%@ page import="
java.io.*,
java.net.*,
javax.servlet.*,
java.sql.*,
java.util.*
"%>
<%!
Connection conn = null;
%>
<%
Statement stmt = null;
ResultSet rst = null;
try{
try{
이슈사항
해 결 안
www.bea.co.kr 63
WEBLOGIC
Technical Tip
Driver driver = (Driver)Class.forName("weblogic.jdbc.pool.Driver").newInstance();
Properties props = new Properties();
conn = driver.connect("jdbc:weblogic:pool:OraclePool", prop
:
===
이와 같이 선언된 경우 예상할 수 있듯이 다음과 같은 절차로 작업이 일어나게 되면 위와 같은 에러가 발생
하게 된다.
===
1. A 작업에서 connection 생성, DB 작업 진행
2. B 작업에서도 connection을 생성하였으나 static 변수인 관계로 동일한 메모리 참조, 역시 DB 작업 진행
3. A 작업에서 connection close
4. B 작업에서 역시 connection close, 이때 이미 A 작업에서 close된 관계로 에러 발생
===
87,name=DefaultWebApp_myserver,context-path=)] Root cause of ServletException
java.sql.SQLException: Connection has already been closed.
at weblogic.jdbc.pool.Connection.checkIfClosed(Connection.java:68)
at weblogic.jdbc.pool.ResultSet.close(ResultSet.java:186)
...
위와 같은 에러가 날 수 있는 한가지 가능성은 JDBC Connection 변수를 다음과 같이 static으로 선언한
경우이다.
===
:
<%@ page import="
java.io.*,
java.net.*,
javax.servlet.*,
java.sql.*,
java.util.*
"%>
<%!
Connection conn = null;
%>
<%
Statement stmt = null;
ResultSet rst = null;
try{
try{
이슈사항
해 결 안
www.bea.co.kr 63
WEBLOGIC
Technical Tip
Driver driver = (Driver)Class.forName("weblogic.jdbc.pool.Driver").newInstance();
Properties props = new Properties();
conn = driver.connect("jdbc:weblogic:pool:OraclePool", prop
:
===
이와 같이 선언된 경우 예상할 수 있듯이 다음과 같은 절차로 작업이 일어나게 되면 위와 같은 에러가 발생
하게 된다.
===
1. A 작업에서 connection 생성, DB 작업 진행
2. B 작업에서도 connection을 생성하였으나 static 변수인 관계로 동일한 메모리 참조, 역시 DB 작업 진행
3. A 작업에서 connection close
4. B 작업에서 역시 connection close, 이때 이미 A 작업에서 close된 관계로 에러 발생
===
'WebLogic > JDBC' 카테고리의 다른 글
[weblogic] multi data source vs ctf(connection time failover) (0) | 2010.01.26 |
---|---|
[JDBC] WebLogic Data Source Monitoring (0) | 2010.01.25 |
[JDBC] servelt + JDBC 연동 개발 가이드 (0) | 2010.01.25 |
[JDBC] inactive connection timeout (1) | 2010.01.25 |
JDBC connection leak (4) | 2010.01.25 |