관리 메뉴

HAMA 블로그

자바 경로 (Path) 및 사용법 정리 본문

Java

자바 경로 (Path) 및 사용법 정리

[하마] 이승현 (wowlsh93@gmail.com) 2015. 8. 12. 11:23

나중에 또 잊어버리는것을 방지하고자 ;; 시간날때마다 하나씩 정리해둡니다.


케이스 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 / 폴더에 날짜별로 생겨납니다. 



Comments