Interstage Application Server トラブルシューティング集 |
目次
索引
![]() ![]() |
第9章 J2EEアプリケーション開発・運用時の異常 | > 9.14 Javaアプリケーションのメソッドトレースの採取 |
以下のサーブレットを例として、トレース情報の見方を説明します。
*********************************************************************************** 1: import javax.servlet.http.*; 2: import javax.servlet.*; 3: import java.io.*; 4: public class HelloServlet extends HttpServlet{ 5: public void doGet(HttpServletRequest request, HttpServletResponse response) 6: throws ServletException, IOException { 7: response.setContentType("text/html"); 8: PrintWriter out = response.getWriter(); 9: out.println("<html>"); 10: out.println("<head>"); ・・・(略)・・・ 11: } 12: } ***********************************************************************************
上記サーブレットを呼び出した場合、以下のトレース情報が出力されます。日時、スレッド名および16進出力は、省略しています。また、表示の関係上、改行している箇所があるため、実際の出力形式とは若干の違いがあります。
*********************************************************************************** 1 : in, org.apache.coyote.tomcat4.CoyoteRequestFacade, <init>, PARAM:(CoyoteRequest):org.apache.coyote.tomcat4.CoyoteRequest@4378f6 2 : out, org.apache.coyote.tomcat4.CoyoteRequestFacade, <init>, RET:void 3 : in, org.apache.coyote.tomcat4.CoyoteResponseFacade, <init>, PARAM:(CoyoteResponse):org.apache.coyote.tomcat4.CoyoteResponse@3a83cc 4 : out, org.apache.coyote.tomcat4.CoyoteResponseFacade, <init>, RET:void ・・・(略)・・・ 5 : in, HelloServlet, doGet, PARAM: (CoyoteRequestFacade):org.apache.coyote.tomcat4.CoyoteRequestFacade@22d304: (CoyoteResponseFacade):org.apache.coyote.tomcat4.CoyoteResponseFacade@4bd4f7 6 : in, org.apache.coyote.tomcat4.CoyoteResponseFacade, setContentType, PARAM:(String):text/html 7 : in, org.apache.coyote.tomcat4.CoyoteResponseFacade, isCommitted, PARAM: 8 : out, org.apache.coyote.tomcat4.CoyoteResponseFacade, isCommitted, RET:(boolean):false 9 : out, org.apache.coyote.tomcat4.CoyoteResponseFacade, setContentType, RET:void 10: in, org.apache.coyote.tomcat4.CoyoteResponseFacade, getWriter, PARAM: 11: in, org.apache.coyote.tomcat4.CoyoteResponseFacade, isFinished, PARAM: 12: out, org.apache.coyote.tomcat4.CoyoteResponseFacade, isFinished, RET:(boolean):false 13: out, org.apache.coyote.tomcat4.CoyoteResponseFacade, getWriter, RET:(CoyoteWriter):org.apache.coyote.tomcat4.CoyoteWriter@ade7e 14: in, org.apache.coyote.tomcat4.CoyoteWriter, println, PARAM:(String):<html> 15: in, org.apache.coyote.tomcat4.CoyoteWriter, print, PARAM:(String):<html> 16: in, org.apache.coyote.tomcat4.CoyoteWriter, write, PARAM:(String):<html>:(int):0:(int):6 ・・・(略)・・・ 17: out, HelloServlet, doGet, RET:void 18: in, org.apache.coyote.tomcat4.CoyoteRequestFacade, removeAttribute, PARAM:(String):org.apache.catalina.jsp_file 19: out, org.apache.coyote.tomcat4.CoyoteRequestFacade, removeAttribute, RET:void 20: in, org.apache.coyote.tomcat4.CoyoteRequestFacade, getAttribute, PARAM:(String):javax.servlet.error.exception 21: out, org.apache.coyote.tomcat4.CoyoteRequestFacade, getAttribute, RET:(Object):[] 22: in, org.apache.coyote.tomcat4.CoyoteRequestFacade, clear, PARAM: 23: out, org.apache.coyote.tomcat4.CoyoteRequestFacade, clear, RET:void 24: in, org.apache.coyote.tomcat4.CoyoteResponseFacade, clear, PARAM: 25: out, org.apache.coyote.tomcat4.CoyoteResponseFacade, clear, RET:void
***********************************************************************************
“in”はメソッドの呼び出し、“out”は復帰を表しています。
上の例では正常に処理が行われているため、doGetメソッドは“in”と“out”が対になって出力されています。
引数および戻り値の情報もメソッドトレース機能の書式に従って出力されます。
リクエストに先立ち、HttpServletRequest、HttpServletResponseの実装クラスが作成されていることがわかります。
HelloServletがinitメソッドを実装している場合は、初回呼び出し時に、リクエスト前処理に先立ちinitメソッドの呼び出しが出力されます。
各メソッドとも、正常に復帰しているため、“in”と“out”が対になって出力されています。
トレース情報は以下のように出力されます。
例:トレース情報
6〜9行目 HelloServletクラス、doGetメソッドからHttpServletResponseのsetContentTypeメソッドを呼び出しています。
setContentTypeメソッドは、内部的にisCommittedメソッドを呼び出した後復帰していることがわかります。
-------------------------------------------------------------------------------
in, org.apache.coyote.tomcat4.CoyoteResponseFacade, setContentType,
PARAM:(String):text/html HEX=0074 0065 0078 0074 002f 0068 0074 006d 006c
in, org.apache.coyote.tomcat4.CoyoteResponseFacade, isCommitted,
PARAM:out, org.apache.coyote.tomcat4.CoyoteResponseFacade, isCommitted,
RET:(boolean):false
out, org.apache.coyote.tomcat4.CoyoteResponseFacade, setContentType, RET:void
-------------------------------------------------------------------------------
setContentTypeメソッド引数のisCommittedメソッドの戻り値等がそれぞれ出力されています。
doGetメソッドが復帰した後で、各種後処理が行われていることがわかります。
HelloServletがdestroyメソッドを実装している場合は、IJServer停止時にこのメソッドが呼び出されます。
目次
索引
![]() ![]() |