일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 그라파나
- play 강좌
- 스위프트
- 플레이프레임워크
- 파이썬 강좌
- 이더리움
- 파이썬 데이터분석
- 하이퍼레저 패브릭
- 파이썬 머신러닝
- 블록체인
- hyperledger fabric
- 스칼라 강좌
- 안드로이드 웹뷰
- CORDA
- 스칼라
- akka 강좌
- 하이브리드앱
- 주키퍼
- Golang
- play2 강좌
- 엔터프라이즈 블록체인
- 파이썬 동시성
- 파이썬
- Adapter 패턴
- 스칼라 동시성
- Akka
- Hyperledger fabric gossip protocol
- Play2 로 웹 개발
- Actor
- Play2
- Today
- Total
HAMA 블로그
자바 경로 (Path) 및 사용법 정리 본문
나중에 또 잊어버리는것을 방지하고자 ;; 시간날때마다 하나씩 정리해둡니다.
케이스 1. 스프링 플젝에서 설정을 외부로 빼기위해, 자바 프로퍼티 파일을 사용
- 위의 this 위치에 파일을 생성하여 봅니다. src/main/resources 폴더는 스프링 프로젝트 만들면
자동으로 생기더라구요
- 해당 프로젝트를 war 로 만들면 WEB-INF/classes/ 폴더아래에 WMOSConfig.properties 파일이
위치해 있군요.
- 클래스 로더를 사용해서 파일을 가져오도록 해봅니다.
테스트)
String config ="resources/WMOSConfig.properties"; <-- 이거 안됩니다. 아래처럼 경로를
String config = "WMOSConfig.properties";
ClassLoader currentThreadClassLoader = Thread.currentThread().getContextClassLoader();
URL url = ClassLoader.getSystemResource(config); <--- 안됨
URL url2 = currentThreadClassLoader.getResource(config); <---- 잘됨
Thread.currentThread().getContextClassLoader(); <-- 이렇게 얻어온 클래스로더만 작동합니다.
* 웹 애플리케이션은 웹 컨테이너 안에서 실행되며, 각각의 웹 어플리케이션은 자신의 클래스 로더를 가짐.
위의 WEB-INF/classes/ 경로는 웹어플리케이션의 클래스로더가 인지함.
솔루션)
- WMOSConfig.properties 파일안의 내용
trams-ip = 127.0.0.1
- 파일 내용 읽어오기
Properties prop = new Properties();
ClassLoader cl;
cl = Thread.currentThread().getContextClassLoader();
URL url = cl.getResource("WMOSConfig.properties");
prop.load(url.openStream());
String ip = prop.getProperty("trams-ip");
System.out.println(ip); <--- 127.0.0.1
케이스 2. log4j 의 파일 appender 에서 로그파일 위치는?
<!-- 날짜별 로그 -->
<appender name="file" class="org.apache.log4j.DailyRollingFileAppender">
<param name="file" value="D:/testlogs/dailyout.log"/>
.....
</appender>
이렇게 하면 당연히, D:/testlogs/ 폴더에 날짜별로 생겨납니다.
<!-- 날짜별 로그 -->
<appender name="file" class="org.apache.log4j.DailyRollingFileAppender">
<param name="file" value="./testlogs/mytestlog.log"/>
.....
</appender>
어떻게 될까요?
저기에서 ./ 는 WAS 시작된 위치가 현재 디렉토리입니다. 따라서 톰캣을 사용한다면
Tomcat 7.0/testlogs / 폴더에 날짜별로 생겨납니다.
'Java' 카테고리의 다른 글
자바 쓰레드 점유율 팁 ( 점유율을 공평하게 만들자) (0) | 2015.08.18 |
---|---|
자바 쓰레드 테스트 (0) | 2015.08.18 |
ClassNotFoundException 와 NoClassDefFoundError 차이 (0) | 2015.07.31 |
직렬화(serialization) 에 대한 짧은 이야기 (Q/A) (0) | 2015.07.07 |
자바 어노테이션의 모든것 - (4) (0) | 2015.07.05 |