일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- WebLogic
- appspresso
- jsr 296
- rowspan
- 선택적조인
- Struts
- node.js
- Google Map
- sencha touch
- Spring
- oracle
- Ajax
- Android
- JSON
- dock
- Eclipse
- ibsheet
- tomcat
- MySQL
- iBATIS
- jQuery
- swingx
- 가우스
- PHP
- JDOM
- GPS
- phonegap
- PLSQL
- MFC
- 전자정부프레임워크
- Today
- Total
Where The Streets Have No Name
Commons Configuration 본문
자바를 이용하여 웹 서버 프로그램을 할때 환경설정 파일을 아주 쉽게 다룰수 있는 컴포넌트가 있다.
여기서 환경설정 파일이라 하면 웹서버나 WAS 의 특정 상수값이나, 문자열을 텍스트파일에 저장하여 유용하게 사용할 수 있는 파일로, 굳이 형식을 따지자면 일반 텍스트파일 및 xml 두가지로 구분지을 수 있다.(예, env.conf, env.xml)
환경파일에 있는 값을 읽고/수정 하는 괜찮은 유틸을 직접 만들어 사용하려면 적어도 2일은 소비해야 하나 거져 먹을 수 있는 방법을 소개한다.
아파치 재단의 commons configuration 컴포넌트를 사용하면 아주 쉽게 환경파일을 제어 할 수있다.
예를 들어 아래와 같이 상속을 받아서 클래스를 만들면 이것으로 끝이다.
import org.apache.commons.configuration.ConfigurationException;
import org.apache.commons.configuration.PropertiesConfiguration;
/**
* 클래스 설명: env.conf 파일에 있는 데이터를 읽고/수정하기 위한 클래스이다.
*/
public class Config extends PropertiesConfiguration {
private static Config config;
private Config() throws ConfigurationException {
super(System.getProperty("env.conf"));
}
public static synchronized Config getConfig() throws ConfigurationException {
if (config == null) {
config = new Config();
}
return config;
}
}
위 예제에서 super(System.getProperty("env.conf")); 은 env.conf 환경파일의 위치를 부모클래스에 할당하는 부분으로 env.conf 는 환경변수로 설정하거나 아니면 웹서버나 WAS 실행시 -Denv.conf=/app/fooboo/conf/env.conf 이런식으로 -D 옵션에 명기해 주면 된다.
Config 클래스를 이용하여 여러 타입의 상수값을 환경파일에서 얻어 올 수 있으며 저장할 수도 있다. 환경파일의 값을 가져다가 사용하는 클래스에서는 아래와 같이 사용하면 된다.
Config config = Config.getConfig();
int client_cnt = config.getInt("client_cnt");
이러면 env.conf 파일안에 client_cnt = 1 로 정의되어 있다면 1 을 int 타입으로 리턴할 것이다.
String 타입의 값을 얻어오려면 String path = config.getString("classpath"); 이런식으로 사용하면 된다.
환경파일에 새로운 값을 저장하려면
config.setProperty("client_cnt", "10");
config.setProperty("classpath", "/app/fooboo/WEB-INF/classes");
config.save();
이런식으로 해주면 된다. 마지막에 save() 메소드를 호출해야 한다는 것에 주의하면 된다.
Reference is 아파치 commons configuration