톰캣의 context.xml이 프로젝트 내부에 있는 context.xml을 오버라이딩 하지 않기 때문이다. 이클립스는 자동으로 오버라이딩 하지만, 리눅스에서 실행할 경우 오버라이딩 하지 않기 때문이다.
이 오류를 확인할 수 있는 명령어부터 보자.
톰캣을 실행하면서 뜨는 오류는 catalina.out 파일에 저장된다. catalina.out 파일은 var/log/tomcat8 내부에 있다.
(명령어)
cd /var/log/tomcat8/
ls
로 catalina가 있는지 확인해보자.
이제 오류를 확인해보자. 파일의 마지막을 확인하는 명령어는 다음과 같다.
tail -f catalina.out
다음과 같이 오류를 확인할 수 있다. 연결이 되지 않는다고 한다.
해결법은 간단하다. 톰캣의 context.xml을 열어서 MySQL의 컨텍스트를 입력해주면 된다.
MySQL의 컨텍스트는 톰캣의 문서에서 확인 가능하다.
http://tomcat.apache.org/tomcat-8.5-doc/jndi-datasource-examples-howto.html#MySQL_DBCP_2_Example
여기서 주의할 점이 있다.
톰캣의 문서가 오래되었기 때문에, 조금 수정해줘야 하는 부분이 있는데,
1. driverClassName="com.mysql.cj.jdbc.Driver" : 드라이버에서 중간에 .cj를 추가해줘야 한다.
2. url="jdbc:mysql://localhost:3306/apple?serverTimezone=Asia/Seoul"/ : url에서 쿼리스트링 하나를 추가해줘야 한다. 서버시간을 아시아, 서울로 맞춰줘야 MySQL에 접근이 가능하다.
최종적으로 수정한 컨텍스트는 다음과 같다.
<Resource name="jdbc/TestDB" auth="Container" type="javax.sql.DataSource"
maxTotal="100" maxIdle="30" maxWaitMillis="10000"
username="데이터베이스 아이디" password="데이터 베이스 비밀번호" driverClassName="com.mysql.cj.jdbc.Driver"
url="jdbc:mysql://localhost:3306/apple?serverTimezone=Asia/Seoul"/>
이 컨텍스트는 다음과 같이 거의 마지막 위치에 추가한다.
그럼 데이터베이스 연결에 성공하고, sysout 으로 콘솔에 나오는 값들이 catalina.out 에 도출된다.
'리눅스' 카테고리의 다른 글
리눅스 기본 명령어 (0) | 2020.07.08 |
---|---|
리눅스 파일 시스템 (0) | 2020.07.08 |
ubuntu, Tomcat] 루트가 지정되지 않을 때 (0) | 2020.07.07 |
ubuntu] mySQL 설치 (0) | 2020.07.07 |
ubuntu] aws에 프로그램 배포하기 (0) | 2020.07.07 |