JRun によるアプリケーションの開発
|
|
サーブレット メソッド
パフォーマンスの監視
|
メソッド タイミングのプロパティ
次の 3 種類のプロパティを使用して、メソッドタイミングを制御します。
- タイミングを有効化または無効化する一般的なプロパティ。どのメソッドを監視の対象または非対象にするかを識別します。
- ログ プロパティは、パフォーマンス メッセージを処理し、メッセージの形式を制御するロガーを指定します。
- クラス プロパティおよびメソッドのプロパティは、タイミングが実行されるクラスおよびメソッドを制御します。
次のセクションでは、これらのプロパティについて説明します。
global.properties ファイルで定義されたプロパティ
global.properties
ファイルで定義されたプロパティは、JRun インストールのすべてのサーバー上で実行するすべてのアプリケーションに適用されます。
global.properties
ファイルは、JRun とともに提供されているため変更できません。メソッド タイミングに適用される global.properties
ファイルのセクションには、次のステートメントが含まれています。
#######################################################################
## メソッド タイミング
#######################################################################
# メソッド タイミングを有効にします。
timing.enabled=false
timing.excludecalls=java.*,javax.*,sun.*,org.omg.CORBA.*
timing.includecalls=java.sql.*
# メッセージを処理するために使用されるロガーを定義します。
# 既定では、メッセージはサーブレットを実行する JRun サーバーの
# ログ ファイルに書き込まれます。
# これらのプロパティはメッセージの形式を制御します。
# ロガー名を定義します。
timing.logging.class=simplelogger
# システム ロガーにタイミング メッセージを転送する
# 単純なロガー用のプロパティを指定します。
timing.simplelogger.class=allaire.jrun.methodTimer.SimpleLogger
timing.simplelogger.level=info
timing.simplelogger.entermethod=ENTER
timing.simplelogger.exitmethod=EXIT
timing.simplelogger.beforemethodcall=CALLENTER
timing.simplelogger.aftermethodcall=CALLEXIT
timing.simplelogger.delimiter=,
# メソッド タイミング メッセージをスレッドのローカル記憶領域に転送する
# スレッド ロガーのプロパティを指定します。
# ThreadLogger を
# allaire.jrun.servlets.JRunStats サーブレットと併用して出力を表示します。
timing.threadlogger.class=allaire.jrun.methodTimer.ThreadLogger
# JRunStats サーブレットの設定 (threadlogger と
# 併用されます)
timing.jrunstats.includeSource=true
timing.jrunstats.sourcepath=/WEB-INF/classes;/WEB-INF/jsp
timing.jrunstats.includeZeroTimes=false
# 計測するクラスの名前を指定します。
timing.classes=HttpServlet,SnoopServlet,jsp,jst
# HttpServlet およびすべての直接サブクラスに関する計測設定を指定します。
timing.HttpServlet.class=javax.servlet.http.HttpServlet
timing.HttpServlet.methods=*
timing.HttpServlet.calls=*,javax.servlet.http.*
timing.HttpServlet.doGet.calls=*
timing.HttpServlet.subclasses=true
# SnoopServlet に関する計測設定を指定します。
timing.SnoopServlet.class=SnoopServlet
timing.SnoopServlet.methods=*
timing.SnoopServlet.calls=*,javax.servlet.http.*
# HttpJSPServlet およびすべての直接サブクラスに関する計測設定を指定します。
timing.jsp.class=allaire.jrun.jsp.HttpJSPServlet
timing.jsp.subclasses=true
timing.jsp.methods=*
timing.jsp.calls=*,javax.servlet.http.*,javax.servlet.*
# JSTTag およびすべての直接サブクラスに関する計測設定を指定します。
timing.jst.class=allaire.jrun.jsp.JSTTag
timing.jst.subclasses=true
timing.jst.methods=*
timing.jst.calls=*
一般プロパティ
JRun メソッド タイミングを有効化または無効化するプロパティを生成し、タイミングの対象または非対象となるメソッドを含むライブラリを指定します。次の表では、一般的なプロパティについて説明しています。timing.enabled
プロパティを除き、次に説明するすべてのプロパティの例は、global.properties
ファイルに含まれるステートメントです。
プロパティ |
説明 |
例 |
timing.enabled
|
メソッド タイミングを有効 (true ) または無効 (false ) に指定します。 global.properties ファイルは、このプロパティの値を false と定義します。
|
次のステートメントは、メソッド タイミングを有効にします。
timing.enabled=true
|
timing.excludecalls
|
タイミングから除外するメソッドのカンマ区切りリストを指定します。アスタリスク (*) ワイルドカード文字を使用して、ライブラリ内のすべてのメソッドへの呼び出しを除外します。
|
次のステートメントは、指定されたライブラリ内のすべてのメソッドをタイミングから除外します。
timing.excludecalls=java.*,javax.*
,sun.*,org.omg.CORBA.*
|
timing.includecalls
|
タイミングを計測するメソッドのカンマ区切りリストを指定します。アスタリスク (*) ワイルドカード文字を使用して、ライブラリ内のすべてのメソッドへの呼び出しを含めます。このプロパティは、timing.excludecalls 内の競合する設定を書き換えます。 excludecalls プロパティと
includecalls プロパティの要素で始まる完全修飾クラス名 (パッケージ名を含む) は、対象または非対象、あるいはその両方になります。これらのプロパティは、ライブラリ名または特定のクラス名です。
|
前述の timing.excludecalls ステートメントで使用された場合、次のステートメントは、java.sql ライブラリ内のメソッドへの呼び出しを除く、java ライブラリ内のすべてのメソッドへの呼び出しを除外します。
timing.includecalls=java.sql.*
|
クラスおよびメソッド プロパティ
このセクションでは、JRun によってタイミングが実行されるクラスおよびメソッドを制御するために使用するプロパティについて説明します。
前のセクションで説明したように、通常、timing.includecalls
プロパティと timing.excludecalls
プロパティを使用して、タイミングの対象または非対象となるメソッドを含むライブラリを指示します。タイミングを計測するメソッドのクラスおよびサブクラスを指示するには、このセクションで説明するプロパティを使用します。
global.properties
ファイルには、次のメソッドへの呼び出しのメソッド タイミングを計測するステートメントが含まれています。
HttpServlet
クラスのすべてのメソッド
HttpServlet
クラスの直接サブクラスにあるすべてのメソッド
timing.excludecalls
プロパティで命名されることによって除外されたメソッドを除く、これらのメソッドによって呼び出されたすべてのメソッド
次の表では、クラスおよびメソッドのプロパティについて説明しています。
プロパティ |
説明 |
例 |
timing.classes
|
タイミングを計測するクラスのカンマ区切りリストを指定します。 追加のプロパティは、これらのクラスに関する必要な詳細を提供します。
|
次のステートメントは、HttpServlet 、SnoopServlet 、jsp 、およびjst クラスに対してタイミングが計測されるように指示します。
timing.classes=HttpServlet,SnoopSer
vlet,jsp,jst
|
timing.<ClassName>.
class
|
タイミングを計測するクラスの完全なパッケージ クラス名を指定します。
|
次のステートメントには、HttpServlet クラスの完全なパッケージ クラス名が記述されています。
timing.HttpServlet.class=javax.serv
let.http.HttpServlet
|
timing.<ClassName>.
methods
|
タイミングを計測する、指定されたクラスのメソッドのカンマ区切りリストを指定します。 アスタリスク (*) ワイルドカード文字を使用して、複数のメソッドを指定できます。
|
次のステートメントは、HttpServlet クラスにあるすべてのメソッドに対してタイミングが計測されるように指示します。
timing.HttpServlet.methods=*
|
timing.<ClassName>.
calls
|
タイミングを計測する、現在のメソッドによって呼び出されたメソッドのカンマ区切りリストを指定します。呼び出されたメソッドは、timing.<ClassName>.methods によって指定されたメソッド内のメソッドから呼び出されます。 アスタリスク (*) ワイルドカード文字を使用して、複数のメソッドを指定できます。
|
次のステートメントは、javax.servlet.http への呼び出しに対してタイミングが計測されるように指示します。 最初の引数として指定されたアスタリスク (*) は、前述のステートメントで対象または非対象とされたすべてのクラスおよびライブラリがこのステートメントに適用可能なことを示します。javax ライブラリは、timing.excludecalls プロパティでタイミングから除外されたので、メソッドへの呼び出しに含むクラスを指定する必要があります。
timing.HttpServlet.calls=*,javax.s
ervlet.http.*
|
timing.<ClassName>.
<MethodName>.calls
|
timing.<ClassName>.methods によって指定された各メソッドに対して、タイミングを計測する、呼び出されたメソッドのカンマ区切りリストを指定できます。 アスタリスク (*) ワイルドカード文字を使用して、複数のメソッドを指定できます。
|
次のステートメントは、doGet メソッド内で呼び出された getConnection メソッドのタイミングを計測します。
timing.HttpServlet.doGet.calls=getC
onnection
|
timing.<ClassName>.
subclasses
|
<ClassName> の直接サブクラス、または <ClassName> インターフェイス ディレクトリを実装するクラスに対してタイミングを計測するかどうかを指定します。true または false の値 を指定します。
|
次のステートメントによって、
HttpServlet クラスのすべての直接サブクラスに対してメソッド タイミングが実行されます。
timing.HttpServlet.subclasses=true
|
ログ プロパティ
JRun メソッド タイミングは、生成するメッセージの処理を JRun ログ メカニズムに依存します。したがって、メソッド タイミングを設定するための 1 つのステップとして、ロガーに関連するプロパティを設定する必要があります。ロギングの詳細については、441 ページの第 38 章「ログ」を参照してください。
既定により、メソッド タイミングは、メッセージを文字列形式にする simplelogger
を使用し、そのメッセージを JRun ロガーに送信します。
既定のメッセージ形式は、現在のメソッドおよび呼び出されたメソッドに制御がいつ転送されたり戻されるかを示します。これらのメッセージを区別するキーワードは、このセクションで説明するプロパティを使用して変更できます。
このセクションでは、メソッド タイミング メッセージに関連付けられたロガーを制御するために使用するプロパティについて説明します。次の表では、ログ プロパティについて説明しています。このセクションのすべてのプロパティの例は、global.properties
ファイルに含まれるステートメントの例です。
プロパティ |
説明 |
例 |
timing.logging.class
|
タイミングの出力を取得するロガーの名前を指定します。 追加のプロパティは、このロガーに関する必要な詳細を提供します。
|
次のステートメントは、ロガー名を
simplelogger と定義します。
timing.logging.class=simplelogger
|
timing.<LoggerName>.
class
|
タイミング メッセージの形式を定義するロガー クラスを指定し、そのメッセージをログ システムに転送します。通常、
allaire.jrun.methodTimer.SimpleLogger クラスを使用します。
|
次のステートメントは、simplelogger の ロガー クラスを指定します。
timing.simplelogger.class=allaire.
jrun.methodTimer.SimpleLogger
|
timing.<LoggerName>.
level
|
ログへのログ イベント タイプを指定します。このタイプのメッセージが生成されると、それらのメッセージはロガーに送信されます。指定可能な値は次のとおりです。debug 、error 、info (既定)、およびwarning 。
|
次のステートメントによって、info レベルのメッセージが生成されます。
timing.simplelogger.level=info
|
timing.<LoggerName>.
entermethod
|
現在のクラスの開始時にタイミング メッセージに含めるテキストを指定します。
|
次のステートメントは、現在のメソッドの開始時にテキスト ENTER を表示します。
timing.simplelogger.entermethod=ENTER
|
timing.<LoggerName>.
exitmethod
|
現在のメソッドの終了時に生成されるタイミング メッセージに含めるテキストを指定します。
|
次のステートメントは、現在のメソッドの終了時にテキスト EXIT を表示します。
timing.simplelogger.exitmethod=EXIT
|
timing.<LoggerName>.
beforemethodcall
|
呼び出されたメソッドの終了時に生成されるタイミングメッセージに含めるテキストを指定します。
|
次のステートメントは、呼び出されたメソッドの開始時にテキスト CALLENTER を表示します。
timing.simplelogger.beforemethodcall=C
ALLENTER
|
timing.<LoggerName>.
aftermethodcall
|
呼び出されたメソッドの終了時に生成されるタイミング メッセージに含めるテキストを指定します。
|
次のステートメントは、呼び出されたメソッドの終了時にテキスト CALLEXIT を表示します。
timing.simplelogger.aftermethodcall=
CALLEXIT
|
timing.<LoggerName>.
delimiter
|
タイミング メッセージのコンポーネント間に使用する区切り文字を指定します。simplelogger の既定の区切り文字はカンマです。それ以外の場合はスペースです。
|
次のステートメントは、simplelogger の既定の区切り文字をカンマと定義します。
timing.simplelogger.delimiter=,
|
Copyright © 2001, Macromedia Inc. All rights reserved. |
|