■ 개발환경
- WAS : Tomcat
- JDK : 1.8
리액트에서 JSP를 사용하고 있는데, JSP를 어떻게 디버깅해야 될 지모르겠더라구요. 그래서 톰캣 루트에 디버깅하고 싶은 JSP파일을 복사한 뒤, index.html로 파일명을 변경해서 디버깅 중입니다. 이 포스팅을 참고하시러 온 분들의 개발환경이 저와 안 맞을 것 같아서 관련 포스팅은 링크로 추가해놨습니다.
■ 문제상황
JSP로 오라클에 연결한 뒤, insert 쿼리를 실행하는 도중 에러가 발생했습니다. OracleDriver가 없다는 에러로, Oracle JDBC 드라이버 클래스를 로드할 때, 드라이버의 클래스패스가 잘못 설정되었거나 JAR 파일이 앱 루트의 WEB-INF/lib 아래에 없는 경우 발생합니다.
■ 해결방법
🗨️ JAR? 라이브러리? 드라이버? 설명이 헷갈려요.
혹시 아래 내용에서 사용된 JAR파일과 라이브러리, 드라이버라는 표현이 헷갈리시는 분을 위해 덧붙이자면, JAR 파일은 Java의 배포파일입니다. Java파일을 컴파일하면 class 파일이 되고, class 파일을 묶으면(패키징) 배포파일인 jar 파일이 됩니다. 그래서 java의 라이브러리는 jar로 배포되며, 오라클 드라이버는 라이브러리입니다. 오라클 드라이버는 오라클과 로컬 소스를 연결하는 여러 기능이 포함된 라이브러리입니다.
1. 라이브러리 구하기
아래의 방법 중 편하신 걸로 선택해서 진행하시면 됩니다.
[방법1] 로컬에서 오라클의 라이브러리 경로에서 복사해오기
Oracle 데이터베이스가 로컬에 설치돼 있다면, [OracleHome]/jdbc/lib 에서 드라이버를 얻을 수 있습니다.
저는 오라클을 설치하지 않았기 때문에 오라클 공식 홈페이지에서 드라이브를 다운받겠습니다.
[방법2] 오라클 공식 홈페이지에서 JAR파일 다운로드받기
링크를 통해 홈페이지로 이동하면, Oracle JDBC driver가 2개 있습니다. 설치된 JDK 버전에 따라 다운로드 받으시면 됩니다. [오라클 공식 홈페이지 바로가기]
저는 JDK8 버전이므로 ojdbc8.jar를 다운받았습니다.
🗨️ JDK 버전을 어떻게 확인하나요?
cmd를 열어서 java -version 명령어를 통해 확인 가능합니다. JDK(Java Development Kit)는 자바 개발을 위해 필요한 도구와 라이브러리가 포함되어져 있으므로, JDK 버전이 곧 JAVA 버전입니다. 아래 자바 버전은 "1.8.0_202"라고 적혀있으니 JDK8 버전입니다.
2. 클래스패스 추가하기
클래스패스(Classpath)는 Java 가상 머신(JVM)이 클래스 파일을 찾는 경로를 말합니다. 자바는 JVM 위에서 동작하는데, 자바에 외부 라이브러리를 추가할 경우, 해당 라이브러리에 정의된 java 클래스들도 JVM가 인식할 수 있게 등록해 주어야 합니다. 아래 방법 중 환경에 맞는 방법으로 진행하시면 됩니다.
[방법1.1] 서버 웹 루트에 추가하기
JSP 서버로 톰캣을 사용중입니다. /.../webapps/ROOT/WEB-INF/ 아래에 lib 디렉토리를 만든 뒤, 다운받은 JAR 파일을 붙여넣기 하면 됩니다. 이 디렉터리에 있는 JAR 파일은 자동으로 클래스패스에 포함됩니다.
JAR 파일을 변경한 뒤에는 서버를 재가동시켜야 됩니다.
톰캣 루트 경로에서 bin 아래에 서버 가동, 종료 배치 파일 실행하시면 됩니다. shutdow.bat을 별도로 실행할 것 없이, 열려있는 cmd 창을 닫아도 됩니다.
[방법1.2] 서버 재가동
[방법2] IDE로 프로젝트의 빌드 패스에 JAR 파일 추가
아래는 이클립스 환경에서 클래스 패스를 프로젝트에 추가하는 방법입니다. 아래 링크를 확인해 주세요.
■ 해결결과
ORA-17041은 쿼리에서 바인딩 값의 매핑 오류로, 오라클 연동이 잘 됐기 때문에 쿼리 실행에서 에러가 발생한 모습입니다. oracle.jdbc.driver.OracleDriver는 잘 해결한 모습입니다.
감사합니다.