アプリケーション処理で例外が発生した場合、IJServerのコンテナログにJavaのスタックトレースが出力されます。
スタックトレースの出力例と解析方法を以下に説明します。
■出力例
Webアプリケーションのサーブレットで例外が発生した場合で説明します。
(先頭の“数字:”は、説明の都合上記載しています。)
1: java.lang.NullPointerException 2: at agency.attestation.CheckLoginInfo.doCheck(CheckLoginInfo.java:150) 3: at agency.attestation.AttestationServlet.doGet(AttestationServlet.java:96) 4: at agency.attestation.AttestationServlet.doPost(AttestationServlet.java:161) 5: at javax.servlet.http.HttpServlet.service(HttpServlet.java:772) 6: at javax.servlet.http.HttpServlet.service(HttpServlet.java:865) :
NullPointerExceptionが発生(例外)
発生個所はagency.attestation.CheckLoginInfoクラスのdoCheckメソッド内であり、CheckLoginInfo.javaの150行目にあたる。
doCheckメソッドを呼び出した個所はagency.attestation.AttestationServletクラスのdoGetメソッド内であり、AttestationServlet.javaの96行目にあたる。
doGetメソッドを呼び出した個所はagency.attestation.AttestationServletクラスのdoPostメソッド内であり、AttestationServlet.javaの161行目にあたる。
doPostメソッドを呼び出した個所はjavax.servlet.http.HttpServletクラスのserviceメソッド内であり、HttpServlet.javaの772行目にあたる。
serviceメソッドを呼び出した個所はjavax.servlet.http.HttpServletクラスのserviceメソッド内であり、HttpServlet.javaの865行目にあたる。
■解析方法
スタックトレースの先頭行のクラスが自分で作成したクラスであるならば、例外が発生した行がどうなっているのかを、ソースファイルを見て確かめることができます。
先頭行のクラスが自分で作成したクラスでないならば、例外が発生した行を見ることができないかもしれません。その場合、トレースの最も上行にある自分が作成したクラスを探し、ソースファイルを見て確認してください。発生した例外が何であるかを確認して、呼び出し個所のメソッドの引数などを確認してください。
また、スタックトレースに続けて“Caused by:”として別の例外が出力されている場合、根本原因を表していますので、こちらをあわせて確認してください。
スタックトレースで表示される例外(Exception)とErrorについては、“メッセージ集”を参照してください。
補足
WebアプリケーションのJSP実行時に例外が発生した場合
JSPはjavaファイルに変換しコンパイルして実行されるため、実行時に例外が発生した場合、スタックトレース上では以下の例のように出力されます。
例:Webアプリケーションのルートディレクトリ(コンテキストルート)配下の以下のJSPを呼び出した場合。
/subdir/sample.jsp
: at org.apache.jsp.subdir.sample_jsp._jspService(sample_jsp.java:46) :
固定部分“org.apache.jsp.”の後に、サブディレクトリ名、JSPに対応するクラス名、メソッド名、(対応するjavaファイル名:行番号)となります。
なお、対応するjavaファイルの格納先については“2.2.3 IJServerのファイル構成”を参照してください。