솔루션에서 DB를 연결할 때는 솔루션.properties를 이용하여 DB에 직접 연결하는 방법과 WAS를 통해서 JNDI로 연결하는 2가지 방법이 있다.
여기서는 WAS를 통해서 JNDI로 연결하는 방법을 하려고 한다. 그래서 JNDI로 연결을 하기 전에 WAS(TOMCAT)에 먼저 JNDI 설정이 되어있어야 하고 설정하는 방법은 아래와 같다.
(만약 컨테이너 분리가 되어있다고 하면 모든 컨테이너의 conf 파일들을 수정해줘야한다)
Jndi 설정
1) $CATALINA_HOME/conf/server.xml에 아래 내용 입력
<Resource name="jdbc/fidodb" auth="Container" type="javax.sql.DataSource" factory="org.apache.tomcat.jdbc.pool.DataSourceFactory" maxActive="50" maxIdle="30" maxWait="10000" username="fido" password="fido" driverClassName="com.mysql.jdbc.Driver" validationQuery = "select 1" testWhileIdle = "true" timeBetweenEvictionRunsMillis = "7200000" url="jdbc:mysql://localhost:3306/fido?characterEncoding=utf8"/> |
기존 UserDatabase~conf/tomcat-users.xml 부분 주석
l 데이터베이스 속성
Name | Datasource에 대한 jndi 이름 (하고 싶은 이름 입력) |
Auth | 인증주체 |
Driverclassname | 연결한 db 종류에 따른 드라이브 클래스 이름 |
Factory | 연결한 db 종류에 따른 connectionpool 생성 클래스 이름 |
Maxactive | 동시에 최대로 db에 연결할 수 있는 connectionpool수 |
Maxidle | 동시에 idle 상태로 대기 할 수 있는 최대수 |
Maxwait | 새로운 연결이 생길 때까지 기다릴 수 있는 최대 시간 |
User | Db 접속 id |
Password | Db 접속 비밀번호 |
Type | 유 종류별 datasource |
url | 접속할 db 주소와 포트 번호 및 sid |
출처: https://java117.tistory.com/14
아래에서 username(db 접속 id)와 password 등을 확인할 수 있다.
2) $CATALINA_HOME/conf/context.xml
<ResourceLink global="jdbc/fidodb" name="jdbc/fidodb" type="javax.sql.DataSource"/>
3) 프로젝트…/webapp/WEB-INF/web.xml
<resource-ref> <description>DB Connection</description> <res-ref-name>jdbc/fidodb</res-ref-name> <res-type>javax.sql.DataSource</res-type> <res-auth>Container</res-auth> </resource-ref> |
4) $CATALINA_HOME/lib 에 mysql-connector-java.*.jar 파일 추가
각 버전에 맞게 추가
https://dev.mysql.com/downloads/connector/j/ => 없는 사람 여기에서 운영체제에 맞게 다운로드.
여기까지가 TOMCAT에 JNDI 설정하는 방법이고 아래는 사용할 솔루션 *.xml에 설정하는 방법입니다.
솔루션 JNDI 설정
<property name="jndiName" value="java:/comp/env/jdbc/fidodb"/>
Jndi 에러
Mar 15, 2021 9:07:15 AM org.apache.tomcat.jdbc.pool.ConnectionPool init
SEVERE: Unable to create initial connections of pool.
java.sql.SQLException: com.mysql.jdbc.Driver
at org.apache.tomcat.jdbc.pool.PooledConnection.connectUsingDriver(PooledConnection.java:253)
at org.apache.tomcat.jdbc.pool.PooledConnection.connect(PooledConnection.java:181)
at org.apache.tomcat.jdbc.pool.ConnectionPool.createConnection(ConnectionPool.java:738)
….
Caused by: java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
jndi 에러 해결
처음에 mysql-connector-java-*.jar를 …\webapps\MagicFIDO2Admin\WEB-INF\lib에 넣었는데 못 찾아서
$CATALINA_HOME\lib에 넣었더니 에러해결!
'WEB|WAS > Tomcat' 카테고리의 다른 글
tomcat war 구축시 생기는 에러 (0) | 2021.05.13 |
---|---|
[Tibero] JNDI 설정 (0) | 2021.05.13 |
centos7 tomcat8 install (0) | 2021.04.19 |
tomcat multi instance 구성 (0) | 2021.02.23 |
web server vs was server, tomcat structure, how to use sv (0) | 2020.09.11 |
댓글