以下のJSPを例として、トレース情報の見方を説明します。
■例:HelloJSP.jspのコード
1 : <%@ page contentType="text/html; charset=Shift_JIS" %>
2 : <HTML>
3 : <HEAD>
4 : <META http-equiv="Content-Type" content="text/html; charset=shift_jis">
5 : <TITLE>HelloJSP</TITLE>
6 : </HEAD>
7 : <BODY>
8 : <H1>HelloJSP</H1>
9 : <FORM method=post >
10 : <INPUT name="param" size="30">
11 : <INPUT type="submit" value="Submit">
12 : <INPUT type="reset" value="Reset">
13 : </FORM>
14 : <P>
15 : <%
16 : String param=request.getParameter("param");
17 : if(param==null)
18 : param="";
19 : String encParam=new String(param.getBytes("8859_1"),"Shift_JIS");
20 : %>
21 : 入力データ:<%=encParam%>
22 : </BODY>
23 : </HTML>■例:トレース情報
上記JSPを呼び出した場合、以下のトレース情報が出力されます。日時、スレッド名および16進出力は、省略しています。また、表示の関係上、改行している箇所があるため、実際の出力形式とは若干の違いがあります。
・・・(略)・・・
1: in, org.apache.catalina.connector.RequestFacade, getServletPath, PARAM:
2: out, org.apache.catalina.connector.RequestFacade, getServletPath,
RET:(String):/HelloJSP.jsp
3: in, org.apache.catalina.connector.RequestFacade, getPathInfo, PARAM:
4: out, org.apache.catalina.connector.RequestFacade, getPathInfo, RET:(String):[]
5: in, org.apache.catalina.connector.RequestFacade, getQueryString, PARAM:
6: out, org.apache.catalina.connector.RequestFacade, getQueryString, RET:(String):[]
7: in, org.apache.jsp.HelloJSP_jsp, _jspService,
PARAM:(RequestFacade):org.apache.catalina.connector.RequestFacade@15ede11:
(ResponseFacade):org.apache.catalina.connector.ResponseFacade@1455cf4
8: in, org.apache.catalina.connector.ResponseFacade, setContentType,
PARAM:(String):text/html; charset=Shift_JIS
9: in, org.apache.catalina.connector.ResponseFacade, isCommitted, PARAM:
10: out, org.apache.catalina.connector.ResponseFacade, isCommitted,
RET:(boolean):false
11: out, org.apache.catalina.connector.ResponseFacade, setContentType, RET:void
・・・(略)・・・
12: in, org.apache.jasper.runtime.JspWriterImpl, write, PARAM:(String):
<HTML>
・・・(略)・・・
<P>
13: in, org.apache.jasper.runtime.JspWriterImpl, write, PARAM:(String):
<HTML>
・・・(略)・・・
<P>
:(int):0:(int):293
14: in, org.apache.jasper.runtime.JspWriterImpl, ensureOpen, PARAM:
15: out, org.apache.jasper.runtime.JspWriterImpl, ensureOpen, RET:void
16: in, org.apache.jasper.runtime.JspWriterImpl, min, PARAM:(int):8192:(int):293
17: out, org.apache.jasper.runtime.JspWriterImpl, min, RET:(int):293
18: out, org.apache.jasper.runtime.JspWriterImpl, write, RET:void
19: out, org.apache.jasper.runtime.JspWriterImpl, write, RET:void
20: in, org.apache.catalina.connector.RequestFacade, getParameter,
PARAM:(String):param
・・・(略)・・・
21: out, org.apache.catalina.connector.RequestFacade, getParameter,
RET:(String):FUJITSU
・・・(略)・・・
22: out, org.apache.jsp.HelloJSP_jsp, _jspService, RET:void
23: in, org.apache.catalina.connector.RequestFacade, getAttribute,
PARAM:(String):javax.servlet.include.context_path
24: out, org.apache.catalina.connector.RequestFacade, getAttribute, RET:(Object):[]
・・・(略)・・・
25: in, org.apache.catalina.connector.RequestFacade, getServletPath, PARAM:
26: out, org.apache.catalina.connector.RequestFacade, getServletPath,
RET:(String):/HelloJSP.jsp
27: in, org.apache.catalina.core.StandardWrapperFacade, getServletName, PARAM:
28: out, org.apache.catalina.core.StandardWrapperFacade, getServletName,
RET:(String):jsp
29: in, org.apache.catalina.connector.CoyoteWriter, recycle, PARAM:
30: out, org.apache.catalina.connector.CoyoteWriter, recycle, RET:voidリクエスト前処理 1~6行目
HelloJSP.jspの呼び出しに先立ち、HttpServletRequest、HttpServletResponseの実装クラスが作成されていることがわかります。
HelloJSP.jspがjspInitメソッドを実装している場合は、初回呼び出し時に、リクエスト前処理に先立ち、jspInitメソッドの呼び出しが出力されます。
サービス(_jspServiceメソッド) 7~22行目
各メソッドとも、呼び出し後、正常復帰しているため、“in”と“out”が対になって出力されています。
JSPコード1行目のpageディレクティブの処理が、トレース情報8行目のsetContentTypeメソッド呼び出しになっています。
JSPコード2~14行目のHTMLタグからPタグまでの出力が、トレース情報12行目のwriteメソッド呼び出しになっています。
JSPコード16行目のパラメタ情報取り出し処理が、トレース情報20行目のgetParameterメソッド呼び出しになっています。
リクエスト後処理 23~30行目
_jspServiceメソッドが復帰した後で、各種後処理が行われていることがわかります。
HelloJSP.jspでjspDestroyメソッドを実装している場合は、IJServer停止時にこのメソッドが呼び出されます。