티스토리 뷰
개발/java
java.sql.SQLRecoverableException: IO Error : Connection reset
개발자와코더사이가 PM일까? 2021. 5. 30. 23:00반응형
고객사에 갔더니 아래의 오류가 딱 하고 나왔다. 음...
java.sql.SQLRecoverableException: IO Error : Connection reset
여기저기 인터넷에서 찾아보면 거의 대부분 오라클 11g이고 ojdbc6.jar에서 생기는 문제이고
아래와 같이 풀면 된다고 한다.
-Djava.security.egd=file:///dev/urandom
근데 잠깐만... 우리 한번 java version을 확인해보자.
나같은 상황은 하나의 톰캣에 오라클 12c와 11g을 쓰고 ojdbc6.jar, 거기에 java8을 쓰는데 java8에서는unrandom은 필요가 없다고 한다.
https://www.baeldung.com/java-security-egd
[
The java.security.egd JVM Option | Baeldung
The java.security.egd JVM startup property affects how the SecureRandom class initializes. Let's explore how changing its value impacts our code.
](https://www.baeldung.com/java-security-egd)
음... 머리가 아파온다. 아직까지 해결하지 못했고 우선 의심 되는 고객 db connection를 테스트 할 수 있는 jar 파일을 만들어서 테스트 예정이다.
package dbTest;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.Scanner;
import java.text.SimpleDateFormat;
import java.util.Date;
public class main {
public static void main(String\[\] args) {
int connectCount = 0;
String url = "";
String id = "";
String pw = "";
Scanner scanConnectCount = new Scanner(System.in); // 문자 입력을 인자로 Scanner 생성
System.out.println("connectCount: ");
String stringConeectCount = scanConnectCount.nextLine(); // 키보드 문자 입력
if (stringConeectCount == "") {
connectCount = 0;
} else {
connectCount = Integer.parseInt(stringConeectCount);
}
Scanner scanUrl = new Scanner(System.in); // 문자 입력을 인자로 Scanner 생성
System.out.println("url: ");
url = scanConnectCount.nextLine(); // 키보드 문자 입력
Scanner scanId = new Scanner(System.in); // 문자 입력을 인자로 Scanner 생성
System.out.println("id: ");
id = scanConnectCount.nextLine(); // 키보드 문자 입력
Scanner scanPw = new Scanner(System.in); // 문자 입력을 인자로 Scanner 생성
System.out.println("pw: ");
pw = scanPw.nextLine(); // 키보드 문자 입력
System.out.println("===================");
System.out.println("ConnectTest Info");
System.out.println("connectCount=======" + connectCount);
System.out.println("dbInfo=============" + url + "/" + id + "/" + pw);
System.out.println("===================");
if (connectCount > 0 && url != "" && id != "" && pw != "") {
for (int i = 0; i < connectCount; i++) {
Connection conn = null;
try {
SimpleDateFormat format1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date time = new Date();
Class.forName("oracle.jdbc.driver.OracleDriver");
//System.out.println("Start Time " + format1.format(time));
long start = System.currentTimeMillis();
conn = DriverManager.getConnection(url, id, pw);
long stop = System.currentTimeMillis();
if ((stop - start) > 1000) {
System.out.println("connected Time " + (stop - start) + " ms. this is Slow");
} else {
System.out.println("connected Time " + (stop - start) + " ms");
}
time = new Date();
//System.out.println("End Time " + format1.format(time));
conn.close();
} catch (ClassNotFoundException cnfe) {
System.out.println("Not Found Class.." + cnfe.getMessage());
} catch (SQLException se) {
System.out.println(se.getMessage());
} finally {
if (conn != null)
try {
conn.close();
System.out.println("=============conn.close()=========");
} catch (SQLException e) {
e.printStackTrace();
}
}
}
} else {
System.out.println("===================");
System.out.println("Connection Info Fail");
System.out.println("===================");
}
}
}
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 인스타그램
- oracle
- java api
- 정동지
- 이클립스
- 산외한우마을
- 파주여행
- 부천역
- 인천여행
- 대관령양떼목장
- 가평여행
- 담양 죽녹원
- 보성녹차밭
- 인천
- 덤프
- pdf ms워드 변환
- 오라클
- 맛집
- 임자도
- ora-01940
- 토드
- 제주도여행
- jdk
- 테라로사
- PPTX
- 밀리세컨드
- 가평팬션
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함