[Spring] 이클립스에서 Tomcat에 DataSource를 JNDI로 설정하기(JDBC -> JNDI)
기존 사용중인 프로젝트에서는 dataSource를 jdbc로 사용하고 있었다.
- 기존 사용중인 dataSource
<bean id="dataSource"
class="org.springframework.jdbc.datasource.DriverManagerDataSource"
p:driverClassName="oracle.jdbc.driver.OracleDriver"
p:url="jdbc:oracle:thin:@localhost:1521:xe"
p:username="user_id" p:password="password" />
jdbc를 jndi로 변경하기로 함
-------------변경방법--------------
1. tomcat 내의 설정 변경
1-1. server.xml
1-2. context.xml
2. spring 프로젝트 내의 설정 변경
2-1. web.xml
2-2. DataSource
--------------------------------------
1. TOMCAT내의 설정변경
1-1. server.xml
서버에서 server.xml 열기
여기에 JNDI resource를 정의한다.
아래의 resource를 맞게 수정하여 <GlobalNamingResources></GlobalNamingResources> 태그 안에 넣는다.
<Resource auth="Container"
name="jdbc/test"
type="javax.sql.DataSource"
driverClassName="oracle.jdbc.OracleDriver"
url="jdbc:oracle:thin:@localhost:1521:xe"
username="user_id"
password="password"
validationQuery="select 1 from dual"
maxActive="20"
maxIdle="20"
maxWait="5000"
minIdle="2"
/>
내 경우에는 oracle db였기에 url과 driverClassName이 oracle이지만 맞는 것을 사용하면 된다.
* MariaDB의 경우
driverClassName="org.mariadb.jdbc.Driver"
url="jdbc:mariadb://localhost:3306/test"
* MySQL의 경우
driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://127.0.0.1:3306/test"
* MS-SQL의 경우
driverClassName="com.microsoft.sqlserver.jdbc.SQLServerDriver"
url="jdbc:sqlserver://127.0.0.1;DatabaseName=test"
1-2. context.xml
ResourceLink정의
<Context></Context> 안에 추가
<ResourceLink global="jdbc/test" name="jdbc/test" type="javax.sql.DataSource"/>
2. 프로젝트 내의 설정 변경
2-1. web.xml
resource-ref 를 <web-app></web-app> 안에 추가
<resource-ref>
<res-ref-name>jdbc/test</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
2-2. datasource부분 수정
이건 프로젝트마다 다르겠지만
내 프로젝트의 경우 spring-datasource.xml 에 그냥 작성되어있어 그냥 수정할 예정이다.
맨 위에 있던 dataSource 가 있는 부분을 수정하면 된다.
<bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiName" value="jdbc/test"/>
<property name="resourceRef" value="true"/>
</bean>
그리고 프로젝트 실행해보니 잘된다 휘유 다행