2012-03-04 5 views
6

Netbeans를 사용하여 웹 응용 프로그램을 만들었습니다. 전에 netbeans 및 tomcat 서버 (zip)를 통해 웹 응용 프로그램을 실행할 때 모든 내 외부 파일 (업로드 된 파일 및 내 응용 프로그램에 사용하는 다른 도우미 파일)은 bin 디렉토리에 저장됩니다.Tomcat이 내 파일을 저장하는 위치는 어디입니까?

전용 서버에 프로젝트를 배포하는 방법을 알고 싶었 기 때문에 Windows Installer를 사용하여 Apache Tomcat 서비스를 설치하려고했습니다. 나는 tomcat의 deploy 유틸리티를 사용하여 war 파일을 성공적으로 배치했다. 그러나, 아파치 바람둥이 windows 서비스를 통해 프로젝트를 실행할 때, 그것은 bin dir에있는 파일을 저장하지 않으며 내가 내 bin dir에 붙여 넣은 파일을 읽을 수 없습니다.

어디에서 파일을 배치해야합니까?

편집 : Tomcat 서비스 디렉토리를 관찰 할 때 루트에 저장된다는 것을 알았습니다. 내 tomcat을 'E : \ Apache \ services \ tomcat \'에 설치하면 'tomcat'디렉토리에 저장됩니다. 아파치를 설치할 때

답변

4

,이 프로젝트는 웹 애플리케이션 폴더 안에 있어야합니다 : 내 프로젝트처럼

C:\Apache\tomcat\webapps 

는 gaganisonline있는 디렉토리 구조가이 같은 그래서 :

경로 : C:\Apache\tomcat\webapps\gaganisonline

      gaganisonline 
          |   | 
         WEB-INF  index.html 
          | 
       --------------------------- 
       |   |  |  | 
      web.xml src lib classes 
+0

그래, 내 프로젝트가 webapps 디렉토리에 있다는 것을 알고있다. 그러나, 나는 webapp이 실행되는 동안 어디에서 Tomcat 서버가 파일을 쓰고 저장할 수 있는지 알고 싶었다. 어쨌든 고마워. – braindead

+0

여기에서 ROOT 폴더는 Tomcat의 루트입니다. 표시되는 첫 번째 페이지 index.jsp는 해당 폴더에 있습니다. Tomcat이 작성하고 저장하려고하는 파일의 종류는 무엇입니까? –

5

궁극적으로 응용 프로그램이 파일의 저장 위치를 ​​결정합니다.

당신의 응용 프로그램은 JVM의 현재 디렉토리에 파일을 저장합니다.이 파일은 NetBeans를 통해 웹 서버를 시작할 때 "bin"디렉토리에 저장됩니다. 그렇다면 Tomcat이 Windows 서비스로 시작될 때 현재 디렉토리가 무엇이든 상관없이 찾을 수 있습니다.

솔직히 말해서 나는 잘못 생각한 것 같습니다. 당신은 업로드 된 파일 이어야하고, 사용하고있는 업로드 메커니즘이 거기에 놓여 졌는지에 대해 의식적인 결정을 내려야합니다.

분명히 현재 디렉토리에 넣는 것은 좋지 않습니다. 웹 컨테이너의 시작 방식에 따라 다른 위치에 저장되는 것을 원하지 않습니다. 그리고 분명히 "bin"디렉토리는 부적절한 장소입니다.


그래서 어디 당신이 파일을 넣어해야합니다 (사용자가 이름이 "빈"에 살고있는 스크립트 중 하나와 일치하는 파일을 업로드하려고하면 어떻게? 어떻게)? Tomcat이 종래와 같은 컴파일 된 JSP와 같은 일시적인 파일을 저장 곳입니다 work 디렉토리의 서브 디렉토리 ...에서

  • : 제 생각에는

    , 당신은 세 가지 선택 사항을 가지고있다.

  • Tomcat 설치 디렉토리의 사용자 정의 하위 디렉토리에 있습니다.

  • 파일 시스템의 다른 위치에 있습니다.

당신은 웹 애플리케이션이 재배치 될 때 파일은 일반적으로이 날아 때문에, 웹 애플리케이션 디렉토리에 다음 떨어지고, 당신의 웹 애플리케이션을 방해 파일을 업로드 더 큰 위험이 있기 때문에 할 수 없습니다.

간섭이 발생할 위험이 있기 때문에 bin 또는 logs 또는 lib 또는 config 디렉토리에 파일을 놓아서는 안됩니다 ... 단순히 논리적 인 장소가 아니기 때문에. 당신은 바람둥이 설치 디렉토리의 루트에 상대적인 파일을 작성하려면


, 당신은이 System.getProperty("catalina.base")를 호출하여 무엇인지 찾을 수 있습니다.

하지만 사용자가 실수로 또는 의도적으로 파일을 잘못된 위치에 업로드 할 수 없도록해야합니다. 예를 들어 절대 경로 이름이나 "../../...."을 사용하는 경로 이름을 제공하여 업로드 영역에서 벗어날 수 있습니다.

+0

"name"이'bin'에있는 스크립트 중 하나와 일치하는 경우,'bin' 내의 한 디렉토리에 저장하므로 조금 안전합니다. 여하튼, 나는 빈 옆에있는 다른 디렉토리에 그것을 저장하는 것에 당신의 충고를하고 싶다. 내 문제는 지금 그것을하는 방법입니다? 나는'C : \ Apache \ tomcat \ file.txt'와 같은 정확한 파일 경로를 사용하는 것을 좋아하지 않는다. 나는 보통 상대 경로를 사용한다. 이 문제에 대한 해결 방법이 있습니까? 아니면 정확한 파일 경로를 사용해야합니까? 내 webapp에서 파일에 액세스하면 내 루트 디렉토리는 무엇입니까? – braindead

+0

업데이트 된 답변보기 ... –

관련 문제