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

付録B Javaツール機能> B.1 メソッドトレース機能

B.1.2 制御ファイルの作成方法

 ここでは、制御ファイルの作成方法を説明します。
 制御ファイルは、メソッドトレース機能の動作を定義するためのファイルです。
 ファイル名は、メソッドトレース機能を使用するJava VMの起動時に指定します。
 トレース対象のメソッド名、トレース情報の出力形式、トレース情報の出力先、ファイルローテーションの動作などを定義できます。

■制御ファイルの記述形式

 制御ファイルは、以下の形式で記述します。

定義名=値


 なお、“mt.jar”のインストール先に、制御ファイルのサンプル(fjtrace.conf)がありますので、参考にしてください。

■制御ファイルの定義項目

 制御ファイルに定義できる項目を、以下に示します。

定義名

説明

traceMethod

トレース対象のメソッドを指定します。

valueLevel

メソッドの引数および戻り値情報の出力形式を指定します。

timeStamp

タイムスタンプ出力の有無を指定します。

traceFile

トレース情報を出力するファイル名を指定します。

traceDirectory

トレース情報出力ファイルを格納するディレクトリを指定します。

traceFileCount

トレース情報出力ファイルのローテーション数を指定します。

traceFileSize

トレース情報出力ファイルの最大サイズを指定します。

traceMethod

記述形式

traceMethod=クラス名 メソッド名 [シグネチャ]

 [ ]は省略可能です。

説明

 トレース対象のメソッドを指定します。複数指定できます。
 この定義項目が1つも指定されていない場合は、トレースを行わずにアプリケーションを実行します。
 クラス名、メソッド名、シグネチャはそれぞれ半角空白で区切ります。
 各パラメータの詳細は、以下のとおりです。

クラス名

クラス名を指定します。パッケージ階層の区切りは'.'です。

例) org.apache.coyote.tomcat4.CoyoteRequestFacade
注) '*'による“すべてのクラス”の指定はできません。

メソッド名

メソッド名を指定します。指定には、次の2つの方法があります。

  • メソッド名:クラス名に指定したクラス内で完全一致するメソッドすべてを対象とします。
  • *     :クラス名で指定したクラス内すべてのメソッドを対象とします。

シグネチャ(省略可)

シグネチャを指定します。省略可能です。
指定するとクラス名、メソッド名で限定されたメソッドのうち、さらにシグネチャの一致する特定のメソッドを対象とします。たとえば、クラス内にメソッド名に一致するメソッドが複数存在する(オーバーロードメソッド)場合に、特定のメソッドにトレースを限定できます。
シグネチャは、引数を示すデータ型を"()"で囲み、戻り値を示すデータ型をその後に続けて指定します。データ型の表記方法は、“データ型の表記方法”を参考にしてください。

例1) 引数を持たず、戻り値がvoid型のメソッドの場合
  引数がないため"()"内は記述しません。戻り値void型は")"の後ろに"V"を記述して示します。
    "()V"

例2) String型の配列とboolean型の2つ引数を持ち、戻り値がint型のメソッドの場合
    "([Ljava/lang/String;Z)I"

データ型の表記方法

シグネチャの文字

boolean

Z

byte

B

char

C

short

S

int

I

long

J

float

F

double

D

void

V(戻値の場合のみ)

クラス(注)

Lクラス名;

配列

[

注) クラスは、'L'で始まり、';'で終わります。
  クラス名は、パッケージ名を含む完全なクラス名を使用します。この時の区切り文字は'/'です。
  例) Stringクラスの場合
    "Ljava/lang/String;"

参考

 メソッドのシグネチャを確認するには、JDKに含まれるjavapコマンドに-sオプションを指定します。

javap -s クラス名

注意

 以下のパッケージ配下のクラスについては、メソッドトレースの指定はできません。指定された場合、指定を無視します。

 また、“トレース不可のクラス”に示すクラスについては、トレース情報を出力できません。

valueLevel

記述形式

valueLevel=full | addHex | none

説明

 メソッドの引数および戻り値の出力形式を指定します。
 以下のいずれかの値を指定します。

full

:

引数および戻り値の情報を出力する(省略値)

addHex

:

“full”の機能に加え、文字列の16進数表示を出力する

none

:

引数および戻り値の情報を出力しない

 “full”、“addHex”、“none”以外の値を指定した場合、その行は無効となります。また、“valueLevel”の記述がない場合、“full”が指定されたものと解釈します。
 引数、戻り値の出力形式の詳細は、“トレース情報出力の形式”を参照してください。

timeStamp

記述形式

timeStamp=true | false

説明

 タイムスタンプ出力の有効/無効を指定します。
 以下のいずれかの値を指定します。

true

:

タイムスタンプを出力する

false

:

タイムスタンプを出力しない(省略値)

 “true”、“false”以外の値を指定した場合、その行を無効とします。また、“timeStamp”の記述がない場合、“false”が指定されたものと解釈します。

traceFile

記述形式

traceFile=トレース情報出力ファイル名

説明

 トレース情報を出力するファイルのフルパスを指定します。
 パス中のディレクトリは存在している必要があります。
 パス中のディレクトリが存在しない場合、この行は無効となります。
 また、同名のファイルがすでに存在した場合、上書きされます。
 メソッドトレース機能を一般ユーザで起動した場合には、その一般ユーザに対する書き込み権が付与されているファイルを指定します。

注意

traceDirectory

記述形式

traceDirectory=トレース情報出力ファイルを格納するディレクトリ

説明

 トレース情報出力ファイルを格納するディレクトリのフルパスを指定します。
 ディレクトリは存在している必要があります。
 存在しないディレクトリを指定した場合、この行は無効となります。
 また、メソッドトレース機能を一般ユーザで起動した場合には、その一般ユーザに対する書き込み権が付与されているディレクトリを指定します。

 指定のディレクトリには、次のルールでトレース情報出力ファイルを作成します。

mt<プロセスID>_n.log

mt

:

トレース情報出力ファイルであることを示す固有の文字列です。

<プロセスID>

:

Javaアプリケーションが動作しているプロセスIDです。

_n

:

ファイル番号を示します。nは、0から始まり、最大で“traceFileCount”に指定した値-1までの番号が振られます。

.log

:

ファイルの拡張子です。

注意

traceFileCount

記述形式

traceFileCount=トレース情報出力ファイルのローテーション数


説明

 トレース情報出力ファイルのローテーション数を指定します。
 1〜10(個)が指定可能です。
 省略値は、2(個)です。
 “traceFileCount”の記述がない場合、省略値と解釈します。
 0以下の値を指定した場合は1と解釈します。11以上の値を指定した場合は10と解釈します。
 数字以外を指定した場合は、省略値と解釈します。

注意

traceFileSize

記述形式

traceFileSize=トレース情報出力ファイルの最大サイズ


説明

 トレース情報出力ファイルの1個あたりの最大サイズ(MB)を指定します。
 1〜2147483647(MB)が指定可能です。
 省略値は、1(MB)です。
 “traceFileSize”の記述がないか、以下を指定した場合は、省略値と解釈します。

注意

■制御ファイルの記述例

 制御ファイルの記述例を、以下に示します。

----------------------------------------------------------------------
#
# Interstage Component FJTRACE sample configuration file.
#
valueLevel=full
timeStamp=false
traceDirectory=D:\tmp
traceFileCount=2
traceFileSize=1

traceMethod=com.fujitsu.interstage.XXXX  methodA
traceMethod=com.fujitsu.interstage.XXXX  methodB (Ljava/lang/String;)V
traceMethod=com.fujitsu.interstage.XXXX.YYYY *
----------------------------------------------------------------------

 上記の記述例では、以下のようになります。

トレース情報出力形式

:

メソッドの引数および戻り値の情報を出力する

タイムスタンプ出力

:

タイムスタンプを出力しない

ファイル出力先ディレクトリ

:

D:\tmp 配下

ファイルローテーション数

:

2(個)

ファイルの最大サイズ

:

1ファイルあたり1(MB)

トレース対象メソッド

:

"com.fujitsu.interstage.XXXX"クラスの
  "methodA"メソッド
  "methodB"メソッド(ただし、メソッドのシグネチャが"(Ljava/lang/String;)V"のメソッドのみ)
"com.fujitsu.interstage.XXXX.YYYY"クラスのすべてのメソッド

◆Servletサービスの記述例

 Servletサービスのトレースを採取する場合の設定ファイル例を以下に示します。

----------------------------------------------------------------------
#
# Interstage Component FJTRACE sample configuration file.
#

# javax.servlet.ServletConfigの実装クラス
traceMethod=org.apache.catalina.core.StandardWrapperFacade *

# javax.servlet.ServletContextの実装クラス
traceMethod=org.apache.catalina.core.ApplicationContextFacade *

# javax.servlet.http.HttpServletRequestの実装クラス
traceMethod=org.apache.coyote.tomcat4.CoyoteRequestFacade *

# javax.servlet.http.HttpServletRequestの実装クラス(forward前)
traceMethod=org.apache.coyote.tomcat4.CoyoteRequestFacade *

# javax.servlet.http.HttpServletRequest(forward後)
traceMethod=org.apache.catalina.core.ApplicationHttpRequest *

# javax.servlet.http.HttpServletResponseの実装クラス
traceMethod=org.apache.coyote.tomcat4.CoyoteResponseFacade *

# javax.servlet.http.HttpSessionの実装クラス
traceMethod=org.apache.catalina.session.StandardSessionFacade *

# javax.servlet.RequestDispatcherの実装クラス
traceMethod=org.apache.catalina.core.ApplicationDispatcher *

# HttpServlettResponseから取り出すjava.io.Write
traceMethod=org.apache.coyote.tomcat4.CoyoteWriter *

# JSP outオブジェクトの実装クラス
traceMethod=org.apache.jasper.runtime.JspWriterImpl *

# javax.servlet.jsp.HttpJspPageの実装クラス
traceMethod=org.apache.jsp.<JSP file name>_jsp *

valueLevel=addHex
timeStamp=true
----------------------------------------------------------------------

 JSPで作成したクラスのメソッドトレースを採取する場合、次のように指定します。

traceMethod=org.apache.jsp.<JSP file name>_jsp *

 パッケージ“org.apache.jsp.”にクラス名<JSP file name>_jsp(JSP file nameにJSPソースのファイル名を指定し、その後ろに“_jsp”をつけます)と指定します。
 メソッド名、シグネチャに関しては、通常と同じ指定が可能です。

実装クラスは、使用状況やInterstageのバージョン・レベル等により変化する可能性があります。

◆EJBサービスの記述例

 EJBアプリケーションのデバッグ時にメソッドトレースを使用する場合は、作成したEJBアプリケーションのEnterprise Beanクラスを指定してください。
 CMP2.0 Entity Beanの場合、Enterprise Beanクラスに“_PM”を加えた文字列を指定してください。

CMP2.0 Entity BeanのEnterprise BeanクラスがflightSample.CustomerBeanの場合

flightSample.CustomerBean_PM


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

Copyright 2006 FUJITSU LIMITED