Tomcat 웹 앱에 영구 파일을 어디에 저장해야합니까?/tomcat으로 영구 데이터를 저장하는 방법/방법은?
- javax.servlet.context.tempdir 앱이 재배치 될 때이
- 예컨대에서 절대 경로를 사용하지 마십시오 제거/삭제 것, 가능하지 서블릿의 초기화는 질문의 제목을 응답 옵션
Tomcat 웹 앱에 영구 파일을 어디에 저장해야합니까?/tomcat으로 영구 데이터를 저장하는 방법/방법은?
우리 팀이 많은 작업을 수행합니다. 우리가 따라야 할 일반적인 규칙은 웹 앱 외부와 Tomcat 외부입니다.
우리 sysadmin은 tomcat 사용자에게 rw 권한이있는 서버의 디렉토리 (예 : /var/tomcat/persist
)를 설정합니다. 우리는 Tomcat이 파일 저장, 응용 프로그램 특정 초기화 파일 읽기 등을 위해 디렉토리 구조를 구축했습니다.
서블릿의 init-params에서 절대 경로를 사용하지 않으려면 다음을 고려하십시오. tomcat이 시작될 때 시스템 특성을 설정합니다. 그것에 대해 좋은 점은 Tomcat에서 실행되는 모든 응용 프로그램이 해당 응용 프로그램에 액세스 할 수 있다는 것입니다. 그것에 대해 나쁜 점은 Tomcat에서 실행되는 모든 응용 프로그램이 해당 응용 프로그램에 액세스 할 수 있다는 것입니다. base.persist.dir
이라는 속성을 설정하고 그 아래의 각 응용 프로그램에 대한 하위 디렉터리를 빌드 할 수 있습니다. setenv.sh 스크립트의 시스템 등록 정보는 bin/ 디렉토리의 CATALINA_OPTS 환경 변수에 설정되어 있습니다.
데이터베이스에 파일을 저장
DataSource
및 JDNI를 데이터베이스를 사용하는 방법에 대해? 웹 전용 컨텍스트에서도 동시성, 스레딩, 보안, 클러스터링, 이식성 문제로 인해 java.io
을 사용하여 파일에 쓰는 것은 실제로 권장되지 않습니다. 이러한 문제 중 일부는 "해결 방법"이 될 수 있지만 여전히 최상의 방법은 아닙니다. 표준 접근법은 데이터베이스를 사용하는 것이며,이 옵션을 다시 고려하여 HSQLBD 나 JavaDB와 같은 "파일 기반"경량 데이터베이스를 혼합하여 던집니다. (편집 : 알 수없는 이유로 들어, 데이터베이스가 옵션이 아닌 절대 경로 전달하는 JNDI 또는 컨텍스트 매개 변수 또는 초기화 매개 변수를 사용하여 - 덜 나쁜 옵션 이럴이다 - 너무 제외되는 상대를 들어.. 경로라면 어쩌면 user.home
또는 user.dir
을 보거나 커맨드 라인에서 전달할 수있는 다른 시스템 속성이 좋을 것입니다. 나는 그것을 좋아하지 않으며 이전에 언급 한 문제를 해결하지 못합니다. 결국 그것은 선택 사항입니다.)
Claridfied. 데이터베이스는 옵션이 아닙니다. – nos
일반적으로 데이터베이스를 사용하여 영구 데이터를 저장하고 DataSource를 통해 노출하는 것이 좋습니다.
이렇게하고 싶지 않은 경우, "user.home"시스템 속성 (몇 가지 상황에서 사용되는 것을 본 적이 있습니다) 사용을 고려해보십시오. 그러나 ... 직접 구성하지 않으면 액세스를 작성하기 위해 서블릿을 실행할 권한이 없습니다.
Tomcat을 실행하는 사용자의 홈 디렉토리 아래에있는 webapp 디렉토리에 파일을 저장하는 것이 좋습니다. Tomcat 외부에서는 재배포가 지속되는 것을 의미하며 일반적으로 쓰기 가능한 디렉토리입니다 (사용자의 집 디렉토리에서 작성되기 때문에). 그러나 항상 시스템 속성을 통해 해당 디렉토리의 위치를 무시하는 것이 좋습니다.
일반적으로 이것은 데이터베이스로 이동합니다.알려진
${user.home}/.myapp
영업 데이터베이스를 사용하지 않는 고집 때문에, 나는 다른 방법을 시도 할 것입니다. 예를 들어, 응용 프로그램에서 때때로이를 사용합니다. 검색 인덱스는 데이터베이스의 데이터를 기반으로 다시 계산할 수 있습니다. 사용 사례로 사용자의 집을 사용하는 것이 좋습니다.적어도 우분투에서 tomcat7에 $ {user.home}에 쓰면 권한 때문에 IOException이 발생합니다. – Jonathan
나는 데이터베이스를 사용하고 싶지 않니? – Suppressingfire
Youll은 데이터베이스가 옵션이 아닌 이유에 대해 설명해야합니다. 기본 적이기 때문에 공통점이 있습니다. 어쩌면 우리가 알아야 할 특수하게 제한된 환경에 있습니다. – Karl
아니기 때문에 옵션이 아닙니다. 이러한 대용량 파일을 데이터베이스에 대해 전혀 모르는 레거시 외부 도구로 처리해야하는 방법을 설명하고 데이터베이스를 데이터베이스에 표시하면 즉시 사용할 수 있습니다. 뿐만 아니라 그것에 더 많은 것이 있지만, 단지 내 말을 받아들이십시오 :-) - – nos