- JDBC 드라이버 다운로드 및 설치
- 사용하려는 데이터베이스에 맞는 JDBC 드라이버를 다운로드 받습니다.
다운로드 받은 JDBC 드라이버를 Tomcat 서버의 lib 폴더에 설치합니다.
- context.xml 파일 수정
- Tomcat 서버의 conf 폴더에 있는 context.xml 파일을 열고, Resource 태그를 추가합니다.
- Resource 태그에는 데이터베이스 접속 정보가 포함됩니다. 아래는 Oracle 데이터베이스에 접속하는 Resource 태그의 예시입니다.
<Resource name="jdbc/myoracle" auth="Container" type="javax.sql.DataSource"
maxTotal="100" maxIdle="30" maxWaitMillis="10000"
username="myuser" password="mypassword" driverClassName="oracle.jdbc.driver.OracleDriver"
url="jdbc:oracle:thin:@localhost:1521:XE"/>
- name: JNDI 이름을 지정합니다. JNDI는 Java Naming and Directory Interface의 약자로, 객체의 이름을 통해 객체를 참조할 수 있게 합니다.
- auth: 인증 방법을 지정합니다. "Container"를 지정하면 Tomcat 컨테이너가 자동으로 인증합니다.
- type: javax.sql.DataSource를 지정합니다.
- maxTotal: 동시에 사용할 수 있는 Connection 개수의 최대치를 지정합니다.
- maxIdle: Connection Pool에서 유지할 최대 Idle Connection 수를 지정합니다.
- maxWaitMillis: Connection Pool에서 Connection을 가져오기 위해 대기할 수 있는 최대 시간을 지정합니다.
- username: 데이터베이스 접속에 사용할 사용자 이름을 지정합니다.
- password: 데이터베이스 접속에 사용할 비밀번호를 지정합니다.
- driverClassName: 사용할 JDBC 드라이버 클래스 이름을 지정합니다.
- url: 데이터베이스 접속 URL을 지정합니다.
- web.xml 파일 수정
- Tomcat 서버의 webapps 폴더에 있는 해당 웹 어플리케이션의 web.xml 파일을 열고, ResourceLink 태그를 추가합니다.
- ResourceLink 태그는 JNDI 이름을 참조하는 링크 역할을 합니다. 아래는 위에서 설정한 JNDI 이름을 참조하는 ResourceLink 태그의 예시입니다.
- 사용하려는 프로젝트의 WEB-INF 밑에 web.xml에 아래와 같이 추가한다. res-ref-name의 이름을 맞춰준다.
<resource-ref>
<res-ref-name>jdbc/myoracle</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
- 스프링을 사용하는 경우, datasource를 만들때 다음과 같이 만든다. (MySQL 기준)
<util:properties id="properties" location="classpath:application.properties" />
<bean id="MySQLDS" class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiName" value="#{properties['jndi.name']}" />
</bean>
#properties
jndi.name=java:/comp/env/jdbc/MySQLDS
4.Java 코드 작성
- 위에서 설정한 JNDI 이름을 사용하여 데이터베이스와 연동하는 Java 코드를 작성합니다.
Context initContext = new InitialContext();
Context envContext = (Context) initContext.lookup("java:/comp/env");
DataSource ds = (DataSource) envContext.lookup("jdbc/myoracle");
Connection conn = ds.getConnection
참고