Tomcat 연결 풀 오류로 고민하고 있습니다. 런타임 오류 값은 문자열 값을 생성하는 간단한 저장 프로 시저를 실행 한 후에 발생합니다.Tomcat 연결 풀 버려진 문제
WARNING: Connection has been abandoned PooledConnection[ConnectionID:45 ClientConnectionId: 7817280c-3f7e-4239-a009-3aedd0a855e8]:java.lang.Exception
at org.apache.tomcat.jdbc.pool.ConnectionPool.getThreadDump(ConnectionPool.java:1096)
at org.apache.tomcat.jdbc.pool.ConnectionPool.borrowConnection(ConnectionPool.java:799)
at org.apache.tomcat.jdbc.pool.ConnectionPool.borrowConnection(ConnectionPool.java:648)
at org.apache.tomcat.jdbc.pool.ConnectionPool.getConnection(ConnectionPool.java:200)
at org.apache.tomcat.jdbc.pool.DataSourceProxy.getConnection(DataSourceProxy.java:128)
at util.ThreadLocalUtil.getConnection(ThreadLocalUtil.java:55)
at webapp.dao.WebApplicationDAO.getConnection(WebApplicationDAO.java:30)
at webapp.dao.AccountDAO.generateAccountId(AccountDAO.java:827)
at webapp.bo.Account.generateUserAccountId(Account.java:285)
at webapp.actions.AddUserAccountUNZAction.execute(AddUserAccountUNZAction.java:79)
at org.apache.struts.chain.commands.servlet.ExecuteAction.execute(ExecuteAction.java:58)
at org.apache.struts.chain.commands.AbstractExecuteAction.execute(AbstractExecuteAction.java:67)
at org.apache.struts.chain.commands.ActionCommandBase.execute(ActionCommandBase.java:51)
해당 오류에 대한 지식은 연결이 열렸지만 닫히지 않았 음을 나타냅니다. 계정 dao에서 저장된 proc을 실행할 때 연결이 열립니다. 아래는 저장 프로 시저를 호출하는 코드 블록입니다. 당신이 볼 수 있듯이
Connection conn = null;
CallableStatement stmt = null;
ResultSet rs = null;
try {
conn = getConnection();
stmt = conn.prepareCall(sqlWebAppGenerateUserId);
stmt.setString(1, base);
rs = stmt.executeQuery();
String res = null;
if (rs.next()) {
res = rs.getString(1);
}
if (res == null) {
throw new RuntimeException("Failed to generate user id.");
}
return res;
} catch (SQLException e) {
LOG.error("{}", e);
throw new RuntimeException(e);
}finally {
if (stmt != null) {
try {
stmt.close();
} catch (SQLException e) {
LOG.error(e.getMessage(), e);
}
}
if (rs != null) {
try {
rs.close();
conn.close();
} catch (SQLException e) {
LOG.error(e.getMessage(), e);
}
}
}
것은, 나는 마침내 연결을 닫습니다 차단 사용하고 등
나는 오류가 어떻게 아직도하고 발생되는 이유를 설명하기 위해 손실에 있어요 디버깅하여이 문제를 해결할 수 있습니다. 어떤 도움을 주시면 감사하겠습니다.
우선, 사용하기 시작 [시도 -과 - 자원 (https://docs.oracle.com/javase/tutorial/essential/exceptions/tryResourceClose.html). 그렇게 한 후에도 여전히 문제가 있으면 새로운 질문을 게시하십시오. –