웹서버를 포함한 솔루션 배포시에는 데이터베이스 연결 설정 파일을 포함시키기 어렵다. 사용자의 DB접속 환경이 어떨지 알 수 없기 때문이다. 그렇다고 서버 셋업시에 사람이 일일이 설정파일을 만지는게 하는것도 불안하다.
보통은 어플리케이션 설치시에 정보를 입력받아 속성파일로 써주거나, 웹사이트가 구동되고 나서 DB설정을 먼저 하도록 한다. 그런데 문제는 Spring 이 dataSource 객체를 생성하는 방식이다.
applicationContext.xml
1: <bean id="propertyConfigurer"
2: class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
3: <property name="locations" value="WEB-INF/jdbc.properties" />
4: </bean>
5:
6: <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
7: <property name="driverClassName" value="${jdbc.driverClassName}" />
8: <property name="url" value="${jdbc.url}" />
9: <property name="username" value="${jdbc.username}" />
10: <property name="password" value="${jdbc.password}" />
11: </bean>
Spring 은 이처럼 applicationContext.xml 파일로 properties 파일의 위치를 정의하고 dataSource bean에서 이를 참조하도록 해서 웹서버 시작시에 로딩한다. 그런데 만일 웹서버 시작시에 이 파일이 없거나 속성을 읽어오지 못했다면 서버가 시작조차 되지 않는다.
데이터베이스 연결 속성 파일이 없거나 올바르지 않아도 웹서버가 정상적으로 시작되게 하기 위해서는 PropertyPlaceholderConfigurer 클래스의 ignoreUnresolvablePlaceholders 속성을 true 로 만들어주면 되는데, 이렇게 설정하기 위해서 위 코드의 location 속성 정의 아래 다음 내용을 추가 한다.
1: <property name="ignoreUnresolvablePlaceholders" value="true" />
'IT > Java' 카테고리의 다른 글
[iBATIS 2.x] 일괄처리, 트랜잭션 성능 (0) | 2010.11.11 |
---|---|
Java Tip #2 : 큐(Queue) 성능 테스트 (1) | 2010.11.09 |
Spring - iBATIS : dataSource 의 동적 로딩 (2) | 2010.07.14 |
자바 현재 경로 (0) | 2010.06.25 |
Java Tip #1 : 경과시간 구하기(Stopwatch) (0) | 2010.05.11 |