티스토리 뷰

출처 : wrox Beginning JSP Web Development

 

JSP 오류가 발생했을 때 브라우저 화면상에 보이는 메시지를 가지고 판단하기에는 어려운 점이 많습니다.
게다가 JSP 컨테이너의 종류가 달라지면 같은 오류라 하더라도 이를 해석하는 방법이 다릅니다.

톰캣을 사용하는 경우 다음과 같은 방법으로 보다 이해하기 쉬운 형태로 변경이 가능합니다.

 

java.lang.ArithmeticException : / by zero

        at org.apache.jsp.error_0005fno_0005fcatch_jsp.jspService

        (error_0005fno_0005fcatch_jsp.java:62)

at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:107)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)

at org.apache.jasper.servlet.JspServlet$JspServletWrapper.service(JspServlet.java:200)

at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:379)

at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:453)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)

 

첫번째 라인은 어떤 오류가 발생했는지 알려주는 것으로, 이 경우는 "division by zero(0으로 나눔)" 오류임을 알 수 있다.

 

두 번째 부분은 어디서 오류가 발생했는지를 나타내는 것으로, 이는 우리가 만든 JSP 페이지가 아니라, 이 JSP 페이지가 자바 코드(서블릿)로 해석된 페이지, 즉 error_0005fno_0005fcatch_jsp.java 페이지의 62번째 라인에서 오류가 발생했음을 표현하고 있다.

 

컴파일된 자바 코드는 %CATALINA_HOME%/work/ 폴더에서 찾을 수 있다. 폴더의 이름은 JSP의 URL 경로에 따라 달라진다. 예를 들어 http://localhost:8080/begjsp-ch09/error_no_catch.jsp 페이지의 경우는 %CATALINA_HOME%/work/localhost/begjsp-ch09/error_0005fno_0005fcatch_jsp.java에서 찾을 수 있다.(포트번호인 8080은 포함되지 않음을 주의

 

이 파일을 열고 62번째 라인을 보면 다음과 같은 내용이 있다.

 

i = i / j ;

 

이제 이 라인이 원래의 JSP에서 어디에 해당하는지를 찾아 문제를 해결하면 된다. 코드에 첨가된 주석을 이용하면 보다 쉽게 찾아낼 수 있을 것이다.

댓글