2014-12-11 3 views
0

면책 사항 : 현재 Linux 개발/테스트 서버가 없기 때문에 현재로서는 직접 테스트 할 수 없습니다. 그러므로 나는 여기서 질문을한다. 나는 결국 리눅스 박스를 갖게 될 것이지만, 현재 윈도우를 사용하고있다.웹 서버 외부의 Java Servlet 절대 경로

Windows의 Tomcat 7에서 실행되는 webapp을 디자인 중입니다. & Linux.

전쟁 웹 애플리케이션이 다음 위치에있는 OS의 파일 시스템에서 파일을 처리 할 필요가있는 서블릿을 갖는다

/opt/Tomcat/webapps/MyApp 

C:/opt/Tomcat/webapps/MyApp 

(각각) 다음 위치에 배치되는 시스템 모두에 가정하면

/work/logs/<logfiles> 

C:/work/logs/<logfiles> 

Windows에서 C :/work/logs를 지정할 수 있으며 서블릿은이 절대 경로를 선택하는 것으로 잘 작동합니다. 나는 처음에 C :이 의심 스럽습니다. 나는 이것을 시험했기 때문에 이것을 안다. 내 진짜 질문은

...

리눅스에

, 드라이브 문자가없는 경우에, 나는 /work/logs에보고를 요구하는 경우가 상대 경로를보고하려고합니다 :

/opt/Tomcat/webapps/MyApp/work/logs 

또는 파일 시스템 (/work/logs)을보고 싶은가요?

궁극적으로 전체 디자인에 영향을주기 때문에 지금 묻고 있습니다.

답변

1

Linux의 슬래시는 "절대 경로"를 의미하므로, /work/logs/<something>과 같은 경로를 사용하면 절대 경로로 인식 할 수 있습니다. 당신이 Windows에서 같은 경로를 사용하는 경우 바람둥이의 작업 디렉토리는 C: 드라이브를 사용합니다 C:에있는 경우 바람둥이이 드라이브가 사용됩니다 D:에서 실행중인 경우

BTW는 그러나, 즉, 일을하고 현재 디스크를 사용합니다.

+0

감사합니다. Alex가 실제로 기대했던 것보다 나은 대답입니다. 이제는 Windows에서/work/log 경로를 시험해 볼 것입니다. 궁극적으로 더 많은 이식성과 적은 설정을 의미합니다. – thonnor

+0

Windows 서버에서이 문제를 테스트 한 결과 /work/logs/20141211.log 이 C 발견 : /work/logs/20141211.log - 고마워 알렉스 – thonnor

1

CATALINA_HOME 환경 변수를 사용하여 구성을 저장하는 폴더를 찾을 것을 권장 할 수 있습니다. appconfig가 내부

$CATALINA_HOME/appconfig/ <-- config 
$CATALINA_HOME/webapps/somewar.war  <-- your webapps 

내가 그 서버의 구성로서 기능하는 somewar.properties을 배치합니다 : 내 프로젝트를 위해 나는 다음과 같은 구조를 가지고있다. (또한 log4j.properties와 특별한 인증서/실행중인 서버 인스턴스와 관련된 다른 것들을 배치하지만 최소로 유지하려고 시도합니다.) 프로젝트에 항상 CATALINA_HOME 세트가 있으므로 재사용 가능. somewar.properties 내부

그때 @AlexR 언급으로 (포인트 대답에 자신의 훨씬 더에) 리눅스와 윈도우 모두에서 작동합니다/일/로그를 사용

work.path=/work/logs 

나열합니다하지만 당신이 얻을 수있는 리눅스 에서처럼/work 폴더를 만들려면 루트 액세스 권한이 필요합니다. 그것은 누가 서버를 관리하고 얼마나 엄격한 지에 달려 있습니다. 구성 솔루션을 선호하므로 특정 위치를 사용할 수없는 컴퓨터에서 작업하는 경우 전환 할 수 있습니다.당연히 CATALINA_HOME 내부에 글을 쓸 수 있어야합니다.)

+0

감사합니다 조, 나는 당신이 제안하는 것과 비슷한 장소에 구성 파일을 가지고있어. 내가 언급 한 경로는 "우리"의 통제하에 있지만 변경해야 할 경우에 대비하여 속성 파일을 통해 확실히 참조됩니다. 아무 것도 하드 코드되지 않습니다 (어쨌든 가능할 경우) – thonnor