Interstage Application Server トラブルシューティング集
目次 索引 前ページ次ページ

第8章 J2EEアプリケーション開発・運用時の異常> 8.13 Javaアプリケーションのメソッドトレースの採取

8.13.1 サーブレットの場合

 以下のサーブレットを例として、トレース情報の見方を説明します。

■例:HelloServletのソースコード

  ***********************************************************************************
   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

■doGetメソッドの呼び出しと復帰 5,17行目

 "in"はメソッドの呼び出し、"out"は復帰を表しています。
 上の例では正常に処理が行われているため、doGetメソッドは"in"と"out"が対になって出力されています。
 引数および戻り値の情報もメソッドトレース機能の書式に従って出力されます。

■リクエスト前処理 1〜4行目

 リクエストに先立ち、HttpServletRequest、HttpServletResponseの実装クラスが作成されていることがわかります。
 HelloServletがinitメソッドを実装している場合は、初回呼び出し時に、リクエスト前処理に先立ちinitメソッドの呼び出しが出力されます。

■サービス(doGetメソッド) 5〜17行目

 各メソッドとも、正常に復帰しているため、"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メソッドの戻り値等がそれぞれ出力されています。

■リクエスト後処理 18〜25行目

 doGetメソッドが復帰した後で、各種後処理が行われていることがわかります。
 HelloServletがdestroyメソッドを実装している場合は、IJServer停止時にこのメソッドが呼び出されます。


目次 索引 前ページ次ページ

Copyright 2006 FUJITSU LIMITED