Developer Sang Guy

[Tomcat] 여러 애플리케이션 실행 시 Tomcat jndi Datasource 이슈(Tomcat DBCP) 본문

Others

[Tomcat] 여러 애플리케이션 실행 시 Tomcat jndi Datasource 이슈(Tomcat DBCP)

은크 2023. 12. 8. 10:41

Tomcat context.xml의 Resource 태그에 Apache Tomcat JDBC Pool를 설정하여 여러 애플리케이션을 실행할 경우 각각 애플리케이션 마다 DBCP에 설정한 개별적인 Connection Pool을 생성한다.

 

DBCP 설정에 초기 Connection 개수를 5개로 해놓아도 애플리케이션이 3개가 돌아간다면 독립적인 3개의 Connection Pool이 생성되어 DB에는 15개의 Connection이 연결된다.

 

이는 GlobalNamingResources, ResourceLink를 사용하여 모든 애플리케이션이 공통의 DBCP 설정을 공유하여 같은 Connection Pool을 사용할수 있도록 한다.

 

설정 방법 : 

tomcat/server.xml

<Server>
    <!-- 기타 설정 -->

    <GlobalNamingResources>
        <Resource name="jdbc/globalDB" auth="Container"
                  type="javax.sql.DataSource"
                  maxTotal="100"  <!-- 최대 연결 수 -->
                  maxIdle="30"    <!-- 최대 유휴 연결 수 -->
                  maxWaitMillis="10000" <!-- 최대 대기 시간 (밀리초) -->
                  username="your_username"  <!-- 데이터베이스 사용자 이름 -->
                  password="your_password"  <!-- 데이터베이스 비밀번호 -->
                  driverClassName="com.mysql.jdbc.Driver" <!-- JDBC 드라이버 클래스 -->
                  url="jdbc:mysql://localhost:3306/your_database"/> <!-- 데이터베이스 URL -->
    </GlobalNamingResources>
</Server>
<Context>
    <!-- 기타 설정 -->

    <ResourceLink name="jdbc/localDB" global="jdbc/globalDB" type="javax.sql.DataSource"/>
</Context>

 

ResourceLink > name : 애플리케이션에서 지정 및 사용할 datasource jndi 이름

ResourceLink > global : 사용할 Global resource 이름

Comments