본문 바로가기
WEB|WAS/Tomcat

[MYSQL] JNDI 설정

by 개폰지밥 2021. 3. 17.
반응형

솔루션에서 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

댓글