2011-01-22 2 views
3

현재 시작시 특정 검사를 수행하는 Java 웹 응용 프로그램을 작성하고 있습니다. 예 : 구성 파일이 있는지 확인하고 필요한 모든 설정 변수를 정의합니다. Java 웹 응용 프로그램 시작 오류 처리를위한 올바른 방법

는 I는 ServletContextListener 클래스의 하위 클래스 내부 검사 코드를 배치하여 web.xml의 내부 ServletContextListener 하위 등록 다음 재정의 contextInitialized에서

<listener> 
    <listener-class>com.bloxware.lls3.MainContextListener</listener-class> 
</listener> 

() I 코드 작성에있어서, 상기 구성 파일을 점검 유효한 값이 들어 있습니다.

시작시 오류가 발생하면이 오류를 기록하고 웹 사용자에게 알리고 자합니다.

여기에서 앞으로 이동하는 방법에 대한 도움이 필요

:

  1. 내가합니다 (ServletContextListener.contextInitialized (..) 메소드 내에서) 올바른 위치에 구성 파일 매개 변수를 읽는 건가요?

  2. 일단 이것이 발생하면 사용자에게 오류 페이지 표시를 처리하는 방법 (예 : 전역 플래그를 확인하기 위해 각 서블릿 및 JSP 페이지에 코드를 추가해야합니까? 아니면 더 똑똑한 방법으로 코드를 추가 할 수 있습니까? ServletRequestListener.requestInitialized (..))?

  3. 사용자가 구성 파일을 수정하는 경우 페이지를 새로 고치는 것으로 충분하므로 웹 응용 프로그램을 다시 시작할 필요가 없습니다.

답변

2

동적 구성을 사용하여 자체를 검사한다는 목표를 존중할 수 있지만 실제로는 그 경로를 제안하지 않습니다.

웹 응용 프로그램이 시작될 때 대부분의 경우 (주의 사항) 올바르게 구성되었거나 구성되지 않았습니다. 응용 프로그램이 잘못 구성된 경우 단순히 작동하지 않습니다. 예를 들어 응용 프로그램이 시작되면 많은 사람들이 데이터베이스에 연결합니다. 연결 문자열이 잘못되면 좋은 사용자 환경이 될 수 없습니다. 이 작업은 시작시에 처리해야하며 만 시작하십시오. 웹 응용 프로그램이 작동 할 수 없다는 것을 알고 있으면 시작해서는 안됩니다. 전체 애플리케이션을 통해 코드를 처리하면이를 처리 할 수 ​​없습니다.

컨텍스트 초기화시이를 확인하는 아이디어가 좋습니다. 그러나 관리자 (사용자가 아님)가 문제를 처리하고 앱을 다시 시작할 수 있도록 상세하고 기록 된 예외를 현장에 던지려고합니다.

다시 시작하지 않고 업데이트되는 동적 구성의 경우. 이것은 시간 초과 길이, 로깅 레벨 또는 풀 설정과 같이 중요하지 않은 매개 변수를 조정할 때 유용합니다. 앱이 올바르지 않은 경우 앱을 즉시 중지시키지 않는 앱이어야합니다. DB 연결의 호스트 이름은 (예를 들어)이 중 하나가 아닙니다.

내 경험에 의하면, 이러한 것들은 구성의 동적 재로드에 의해 유발되는 모든 측면 문제를 처리하는 데 정말로 가치가 없습니다. 치명적인 문제가있는 경우 시작시 즉시 확인하고 즉시 중단해야합니다.

EDIT : 사이드 노트 - 구성 파일이 있고 필요한 모든 설정이 포함되어 있는지 확인하는 것은 응용 프로그램 시작 시간이 아닌 테스트에서 수행해야하는 작업입니다. 파일 자체에 대한 간단한 단위 테스트로이를 수행 할 수 있습니다.

+0

관리자가 구성 파일을 변경하고 데이터베이스 암호, 데이터베이스 사용자 이름 또는 기타 구성 매개 변수를 잘못 입력하면 어떻게됩니까? 이 사건이 발생하면, 웹 애플리케이션이 JSP 페이지와 서블릿에 대한 액세스를 허용하지 않고 "적어도 오류가 발생했습니다. 관리자에게 문의하십시오"라는 오류 페이지로 넘어 가고 싶습니다. 이 시점에서 관리자는 연락을 취할 수 있으며 로그 파일을 쉽게 확인할 수 있습니다. –

+1

당신은 말했다 : "웹 응용 프로그램은 작동 할 수 없다는 것을 알고 시작하면 안된다." 질문 : 어떻게 응용 프로그램을 시작할 수 없습니다. 어떤 방법을 써야 시작되지 않는지, 즉 serlvets와 JSP는 더 이상 액세스 할 수 없게됩니다. 현재 오류가 발생하지만 페이지에 액세스 할 수 있으므로이 동작이 마음에 들지 않습니다. –

+0

"구성 파일이 제 위치에 있고 필요한 모든 설정을 포함하고 있는지 확인하는 것은 응용 프로그램 시작 시간이 아닌 테스트에서 수행해야하는 작업입니다." -> 제품을 빌드 할 때 구성 파일은 사용자 입력의 일부이며 검증되어야합니다. 관리자가 구성 파일에 잘못된 값을 입력하면 사용자 인터페이스의 표시와 함께 정상적으로 실패해야합니다. 나는 그것에 대한 단위 테스트에 의지 할 수 없다. –

관련 문제