데이터 소스 개체를 사용하여 연결 풀에서 Oracle JDBC 연결을 가져옵니다. 그리고 (자바 정적 메서드를 통해) 자바에서 DB에 몇 가지 로그를 삽입하는 연결을 사용합니다. 사용자 당 약 10-20 개의 삽입이 있기 때문에 내가하고있는 일은 필터의 요청 수준에서 연결을 커밋하고 세션 청취자의 sessionDestroyed() 메서드를 통해 세션 수준에서 연결을 닫는 것입니다. 다음과 같이 테스트뿐만 프로덕션 환경에서 오류가 나는 연결 풀에서 SQLException 오류가 발생합니다.
java.sql.SQLException: execute, Exception = null (one scenario)
java.sql.SQLException: close, Exception = null (for another scenario)
어떻게 이러한 오류를 방지하기 위해, 몇 가지 오류는 무엇입니까? 대신 요청 레벨에서 커밋하고 세션 레벨에서 닫는 대신 Java 정적 메서드에서 연결을 커밋하고 닫을 수 있습니까?
그러나 내게 할 수 이러한 오류가
if (con.isClosed() || con == null) {
DBConnectionHelper connHelper = DBConnectionHelper.createInstance();
con=connHelper.getConnection("ds");
con.setAutoCommit(false);
}
그래서 내가 위를 확인하고, 내 자바 정적 메서드에 아래의 논리를 가지고 Ɒ이를 발생하는하는 등 방법 연결이 없다는 것입니다 무엇을 즐겁게한다 내가 사형 집행을하려 할 때 문을 닫을 수 있습니까? 그러나 확실하지 않고 왜 혼란스러워하는지.
왜 연결 풀에서 연결을 닫으시겠습니까? 또한 if에서 con가 con.isClosed() 전에 null인지 먼저 확인합니다. – Mike
@Mike : 일부 연결 풀은'close()'호출을 가로 채고 대신 풀에 연결을 반환합니다. – skaffman
@skaffman - 처음 연결하기 전에 'con'은 무엇을 가리 킵니까? –