ヘッダーをスキップ
Oracle® Fusion Middleware Oracle WebLogic Server診断フレームワークの構成と使い方
11g リリース1 (10.3.3)
B60994-01
  ドキュメント・ライブラリへ移動
ライブラリ
製品リストヘ移動
製品
目次へ移動
目次

前
 
次
 

B WLDFインストゥルメンテーション・ライブラリ

WebLogic診断フレームワークのインストゥルメンテーション・ライブラリには診断モニターと診断アクションが含まれています。次の項は、これらのライブラリについて説明します。

インストゥルメンテーション・ライブラリの項目の使用方法は、第11章「インストゥルメンテーションの構成」を参照してください。

診断モニター・ライブラリ

診断モニターは、サーバー・スコープのモニターとアプリケーション・スコープのモニターに大別されます。サーバー・スコープのモニターはWebLogic Serverクラスのインストゥルメントに使用できます。アプリケーション・スコープのモニターはアプリケーション・クラスのインストゥルメントに使用します。DyeInjectionモニターを除くすべてのモニターは委任モニターで、組込みの診断アクションがありません。代わりに、モニターにアタッチされているアクションに委任して、診断アクティビティを実行します。

すべてのモニターには、それぞれのポイントカットがあらかじめ構成されています。ただし、その作用を受ける実際の場所はインストゥルメントされるクラスによって異なります。たとえば、Servlet_Before_Serviceモニターでは、様々なサーブレット実装のいろいろな場所にあるサーブレットまたはJava Server Page (JSP)サービス・メソッドの入口に診断コードが追加されます。

すべての委任モニターには、対応するアクションのみをアタッチできます。対応するかどうかはモニターの性質によって決まります。

次の表では、サーバー・スコープ(WebLogic Serverクラス)内で使用できる診断モニターをリストして説明します。各モニターに対応する診断アクションについては、表の対応アクション・タイプ列を参照してください。

表B-1サーバー・スコープ内で使用する診断モニター

モニター名 モニター・タイプ 対応アクション・タイプ ポイントカット

Connector_Before_Inbound

ステートレス

着信接続を処理するメソッドの入口。

Connector_After_Inbound

サーバー

ステートレス

着信接続を処理するメソッドの出口。

Connector_Around_Inbound

前後

前後

着信接続を処理するメソッドの入口と出口。

Connector_Before_Outbound

ステートレス

発信接続を処理するメソッドの入口。

Connector_After_Outbound

ステートレス

発信接続を処理するメソッドの出口。

Connector_Around_Outbound

前後

前後

発信接続を処理するメソッドの入口と出口。

Connector_Before_Tx

ステートレス

トランザクションの登録、登録解除、開始、ロールバック、コミットを行うメソッドの入口。

Connector_After_Tx

ステートレス

トランザクションの登録、登録解除、開始、ロールバック、コミットを行うメソッドの出口。

Connector_Around_Tx

前後

前後

トランザクションの登録、登録解除、開始、ロールバック、コミットを行うメソッドの入口と出口。

Connector_Before_Work

ステートレス

コネクタの作業項目のスケジューリング、開始、実行に関するメソッドの入口。

Connector_After_Work

ステートレス

コネクタの作業項目のスケジューリング、開始、実行に関するメソッドの出口。

Connector_Around_Work

前後

前後

コネクタの作業項目のスケジューリング、開始、実行に関するメソッドの入口と出口。

DyeInjection

組込み

リクエストがサーバーに届く場所。

JDBC_Before_Commit_Internal

ステートレス

JDBCサブシステムの内部コード。

JDBC_After_Commit_Internal

ステートレス

JDBCサブシステムの内部コード。

JDBC_Before_Connection_

Internal

ステートレス

以下のメソッドの呼出しの前。

Driver.connect

DataSource.getConnection

JDBC_After_Connection_Internal

ステートレス

JDBCサブシステムの内部コード。

JDBC_Before_Rollback_Internal

ステートレス

JDBCサブシステムの内部コード。

JDBC_After_Rollback_Internal

ステートレス

JDBCサブシステムの内部コード。

JDBC_Before_Start_Internal

ステートレス

JDBCサブシステムの内部コード。

JDBC_After_Start_Internal

ステートレス

JDBCサブシステムの内部コード。

JDBC_Before_Statement_

Internal

ステートレス

JDBCサブシステムの内部コード。

JDBC_After_Statement_

Internal

ステートレス

JDBCサブシステムの内部コード。

JDBC_After_Reserve_Connection_Internal

ステートレス

JDBC接続が接続プールから控えられるとき。

JDBC_After_Release_Connection_Internal

ステートレス

JDBC接続が接続接続プールに解放された後。


表B-2はアプリケーション・スコープ(デプロイ済みアプリケーション)内で使用できる診断モニターをリストします。各モニターに対応する診断アクションについては、表の対応アクション・タイプ列を参照してください。

表B-2アプリケーション・スコープ内で使用する診断モニター

モニター名 モニター・タイプ 対応アクション・タイプ ポイントカット

EJB_After_EntityEjbBusiness Methods

ステートレス

すべてのEntityBeanメソッドの出口。これは標準のEJBメソッドではありません。

EJB_Around_EntityEjbBusinessMethods

前後

前後

すべてのEntityBeanメソッドの入口と出口。これは標準のEJBメソッドではありません。

EJB_After_EntityEjbMethods

ステートレス

以下のメソッドの出口。

EnitityBean.setEntityContext

EnitityBean.unsetEntityContext

EnitityBean.ejbRemove

EnitityBean.ejbActivate

EnitityBean.ejbPassivate

EnitityBean.ejbLoad

EnitityBean.ejbStore

EJB_Around_EntityEjbMethods

前後

前後

以下のメソッドの出口。

EnitityBean.setEntityContext

EnitityBean.unsetEntityContext

EnitityBean.ejbRemove

EnitityBean.ejbActivate

EnitityBean.ejbPassivate

EnitityBean.ejbLoad

EnitityBean.ejbStore

EJB_After_EntityEjbSemantic Methods

ステートレス

以下のメソッドの出口。

EnitityBean.set*

EnitityBean.get*

EnitityBean.ejbFind*

EnitityBean.ejbHome*

EnitityBean.ejbSelect*

EnitityBean.ejbCreate*

EnitityBean.ejbPostCreate*

EJB_Around_EntityEjbSemanticMethods

前後

前後

以下のメソッドの入口と出口。

EnitityBean.set*

EnitityBean.get*

EnitityBean.ejbFind*

EnitityBean.ejbHome*

EnitityBean.ejbSelect*

EnitityBean.ejbCreate*

EnitityBean.ejbPostCreate*

EJB_After_SessionEjbMethods

ステートレス

以下のメソッドの出口。

SessionBean.setSessionContext

SessionBean.ejbRemove

SessionBean.ejbActivate

SessionBean.ejbPassivate

EJB_Around_SessionEjbMethods

前後

前後

以下のメソッドの入口と出口。

SessionBean.setSessionContext

SessionBean.ejbRemove

SessionBean.ejbActivate

SessionBean.ejbPassivate

EJB_After_SessionEjbBusinessMethods

ステートレス

すべてのSessionBeanメソッドの出口。これは標準のEJBメソッドではありません。

EJB_Around_SessionEjb

BusinessMethods

前後

前後

すべてのSessionBeanメソッドの入口と出口。これは標準のEJBメソッドではありません。

EJB_After_SessionEjbSemanticMethods

ステートレス

以下のメソッドの出口。

SessionBean.ejbCreateSessionBean.ejbPostCreate

EJB_Around_SessionEjb

SemanticMethods

前後

前後

以下のメソッドの入口と出口。

SessionBean.ejbCreate

SessionBean.ejbPostCreate

EJB_Before_EntityEjbBusinessMethods

ステートレス

すべてのEntityBeanメソッドの出口。これは標準のEJBメソッドではありません。

EJB_Before_EntityEjbMethods

ステートレス

以下のメソッドの入口。

EnitityBean.setEntityContext

EnitityBean.unsetEntityContext

EnitityBean.ejbRemove

EnitityBean.ejbActivate

EnitityBean.ejbPassivate

EnitityBean.ejbLoad

EnitityBean.ejbStore

EJB_Before_EntityEjbSemanticMethods

ステートレス

以下のメソッドの入口。

EnitityBean.set*

EnitityBean.get*

EnitityBean.ejbFind*

EnitityBean.ejbHome*

EnitityBean.ejbSelect*

EnitityBean.ejbCreate*

EnitityBean.ejbPostCreate*

EJB_Before_SessionEjb

BusinessMethods

ステートレス

すべてのEntitybeanメソッドの出口。これは標準のEJBメソッドではありません。

EJB_Before_SessionEjbMethods

ステートレス

以下のメソッドの入口。

SessionBean.setSessionContext

SessionBean.ejbRemove

SessionBean.ejbActivate

SessionBean.ejbPassivate

EJB_Before_SessionEjb

SemanticMethods

ステートレス

以下のメソッドの入口。

SessionBean.ejbCreate

SessionBean.ejbPostCreate

HttpSessionDebug

前後

組込み

getSession - 返されたHTTPセッションを検査

以下のメソッドの呼出しの前後。

getAttribute

setAttribute

removeAttribute

検査点で、およそのセッションのサイズが計算され、生成されたイベントのペイロードとして格納されます。このサイズはセッションをバイト配列にフラット化することで計算されます。セッションをフラット化する際にエラーが発生した場合は、負のサイズが報告されます。

JDBC_Before_CloseConnection

ステートレス

以下のメソッドの呼出しの前。

Connection.close

JDBC_After_CloseConnection

ステートレス

以下のメソッドの呼出しの後。

Connection.close

JDBC_Around_CloseConnection

前後

前後

以下のメソッドの呼出しの前後。

Connection.close

JDBC_Before_CommitRollback

ステートレス

以下のメソッドの呼出しの前。

Connection.commit

Connection.rollback

JDBC_After_CommitRollback

ステートレス

以下のメソッドの呼出しの後。

Connection.commit

Connection.rollback

JDBC_Around_CommitRollback

前後

前後

以下のメソッドの呼出しの前後。

Connection.commit

Connection.rollback

JDBC_Before_Execute

ステートレス

以下のメソッドの呼出しの前。

Statement.execute*

PreparedStatement.execute*

JDBC_After_Execute

ステートレス

以下のメソッドの呼出しの後。

Statement.execute*

PreparedStatement.execute*

JDBC_Around_Execute

前後

前後

以下のメソッドの呼出しの前後。

Statement.execute*

PreparedStatement.execute*

JDBC_Before_GetConnection

ステートレス

以下のメソッドの呼出しの前。

Driver.connect

DataSource.getConnection

JDBC_After_GetConnection

ステートレス

以下のメソッドの呼出しの後。

Driver.connect

DataSource.getConnection

JDBC_Around_GetConnection

前後

前後

以下のメソッドの呼出しの前後。

Driver.connect

DataSource.getConnection

JDBC_Before_Statement

ステートレス

以下のメソッドの呼出しの前。

Connection.prepareStatement

Connection.prepareCall

Statement.addBatch

RowSet.setCommand

JDBC_After_Statement

ステートレス

以下のメソッドの呼出しの後。

Connection.prepareStatement

Connection.prepareCall

Statement.addBatch

RowSet.setCommand

JDBC_Around_Statement

前後

前後

以下のメソッドの呼出しの前後。

Connection.prepareStatement

Connection.prepareCall

Statement.addBatch

RowSet.setCommand

JMS_Before_AsyncMessage

Received

ステートレス

以下のメソッドの入口。

MessageListener.onMessage

JMS_After_AsyncMessage

Received

ステートレス

以下のメソッドの出口。

MessageListener.onMessage

JMS_Around_AsyncMessage

Received

前後

前後

以下のメソッドの入口と出口。

MessageListener.onMessage

JMS_Before_MessageSent

ステートレス

以下のメソッドの呼出しの前。

QueSender send

JMS_After_MessageSent

ステートレス

以下のメソッドの呼出しの後。

QueSender send

JMS_Around_MessageSent

前後

前後

以下のメソッドの呼出しの前後。

QueSender send

JMS_Before_SyncMessage

Received

ステートレス

以下のメソッドの呼出しの前。

MessageConsumer.receive*

JMS_After_SyncMessage

Received

ステートレス

以下のメソッドの呼出しの後。

MessageConsumer.receive*

JMS_Around_SyncMessage

Received

前後

前後

以下のメソッドの呼出しの前後。

MessageConsumer.receive*

JMS_Before_TopicPublished

ステートレス

以下のメソッドの呼出しの前。

TopicPublisher.publish

JMS_After_TopicPublished

ステートレス

以下のメソッドの呼出しの後。

TopicPublisher.publish

JMS_Around_TopicPublished

前後

前後

以下のメソッドの呼出しの前後。

TopicPublisher.publish

JNDI_Before_Lookup

ステートレス

javax.naming.Contextのlookupメソッドの呼出しの前。

Context.lookup*

JNDI_After_Lookup

ステートレス

javax.naming.Contextのlookupメソッドの呼出しの後。

Context.lookup*

JNDI_Around_Lookup

前後

前後

javax.naming.Contextのlookupメソッドの呼出しの前後。

Context.lookup*

JTA_Before_Commit

ステートレス

以下のメソッドの入口。

UserTransaction.commit

JTA_After_Commit

StatelessAdvice

以下のメソッドの出口。

UserTransaction.commit

JTA_Around_Commit

前後

前後

以下のメソッドの入口と出口。

UserTransaction.commit

JTA_Before_Rollback

ステートレス

以下のメソッドの入口。

UserTransaction.rollback

JTA_After_Rollback

StatelessAdvice

以下のメソッドの出口。

UserTransaction.rollback

JTA_Around_Rollback

前後

前後

以下のメソッドの入口と出口。

UserTransaction.rollback

JTA_Before_Start

ステートレス

以下のメソッドの入口。

UserTransaction.begin

JTA_After_Start

StatelessAdvice

以下のメソッドの出口。

UserTransaction.begin

JTA_Around_Start

前後

前後

以下のメソッドの入口と出口。

UserTransaction.begin

MDB_Before_MessageReceived

ステートレス

以下のメソッドの入口。

MessageDrivenBean.onMessage

MDB_After_MessageReceived

ステートレス

以下のメソッドの出口。

MessageDrivenBean.onMessage

MDB_Around_MessageReceived

前後

前後

以下のメソッドの入口と出口。

MessageDrivenBean.onMessage

MDB_Before_Remove

ステートレス

以下のメソッドの入口。

MessageDrivenBean.ejbRemove

MDB_After_Remove

ステートレス

以下のメソッドの出口。

MessageDrivenBean.ejbRemove

MDB_Around_Remove

前後

前後

以下のメソッドの入口と出口。

MessageDrivenBean.ejbRemove

MDB_Before_SetMessageDriven

Context

ステートレス

以下のメソッドの入口。

MessageDrivenBean.setMessage

DrivenContext

MDB_After_SetMessageDriven

Context

ステートレス

以下のメソッドの出口。

MessageDrivenBean.setMessageDrivenContext

MDB_Around_SetMessageDriven

Context

前後

前後

以下のメソッドの入口と出口。

MessageDrivenBean.setMessageDrivenContext

Servlet_Before_Service

ステートレス

以下のサーブレットまたはJSPメソッドの入口。

HttpJspPage._jspService

Servlet.service

HttpServlet.doGet

HttpServlet.doPost

Filter.doFilter

Servlet_After_Service

ステートレス

以下のサーブレットまたはJSPメソッドの出口。

HttpJspPage._jspService

Servlet.service

HttpServlet.doGet

HttpServlet.doPost

Filter.doFilter

Servlet_Around_Service

前後

前後

以下のサーブレットまたはJSPメソッドの入口と出口。

HttpJspPage._jspService

Servlet.service

HttpServlet.doGet

HttpServlet.doPost

Filter.doFilter

Servlet_Before_Session

ステートレス

以下のサーブレット・メソッドの呼出しの前。

HttpServletRequest.getSession

HttpSession.setAttribute/

putValue

HttpSession.getAttribute/

getValue

HttpSession.removeAttribute/

removeValue

HttpSession.invalidate

Servlet_Around_Session

前後

前後

以下のサーブレット・メソッドの呼出しの前後。

HttpServletRequest.getSession

HttpSession.setAttribute/

putValue

HttpSession.getAttribute/

getValue

HttpSession.removeAttribute/

removeValue

HttpSession.invalidate

Servlet_After_Session

ステートレス

以下のサーブレット・メソッドの呼出しの後。

HttpServletRequest.getSession

HttpSession.setAttribute/

putValue

HttpSession.getAttribute/

getValue

HttpSession.removeAttribute/

removeValue

HttpSession.invalidate

Servlet_Before_Tags

ステートレス

以下のJSPメソッドの呼出しの前。

Tag.doStartTag

Tag.doEndTag

Servlet_After_Tags

ステートレス

以下のJSPメソッドの呼出しの後。

Tag.doStartTag

Tag.doEndTag

Servlet_Around_Tags

前後

前後

以下のJSPメソッドの呼出しの前後。

Tag.doStartTag

Tag.doEndTag


診断アクション・ライブラリ

診断アクション・ライブラリには、以下のアクションが含まれます。

これらの診断アクションは、上の2つの表で説明した委任モニターで使用できます。また、ユーザーが定義してアプリケーション内で使用できるカスタム・モニターと一緒に使用することもできます。各診断アクションは、対応モニター・タイプ列に示されている対応するモニターとのみ一緒に使用できます。いくつかの動作(たとえば、TraceElapsedTimeAction)がイベント・ペイロードを生成します。

TraceAction

このアクションは「ステートレス」のアクションで、「前」および「後」のモニター・タイプに対応しています。

TraceActionは、プログラムの実行中に作用場所に追跡イベントを生成します。以下の情報が生成されます。

  • タイムスタンプ

  • リクエストを一意に特定する診断コンテキストからのコンテキスト識別子

  • トランザクション識別子(可能な場合)

  • ユーザーID

  • アクション・タイプ(つまりTraceAction)

  • ドメイン

  • サーバー名

  • インストゥルメンテーション・スコープ名(たとえばアプリケーション名)

  • 診断モニター名

  • モジュール名

  • コード内でアクションを呼び出した場所 - 次を含みます。

    • クラス名

    • メソッド名

    • メソッド・シグネチャ

    • 行番号

    • スレッド名

  • 診断コンテキストによって保持されるペイロード(存在する場合)

DisplayArgumentsAction

このアクションは「ステートレス」のアクションで、「前」および「後」のモニター・タイプに対応しています。

DisplayArgumentsActionは、プログラムの実行中に作用場所にインストゥルメンテーション・イベントを生成し、メソッドの引数または戻り値をキャプチャします。

このアクションが実行されると、イベント・アーカイブにディスパッチされるインストゥルメンテーション・イベントが発生します。インストゥルメンテーション・イベントがbeforeモニターにアタッチされた場合は、ジョインポイントへの入力引数(たとえばメソッド引数)がキャプチャされます。インストゥルメンテーション・イベントがafterモニターにアタッチされた場合は、ジョインポイントからの戻り値がキャプチャされます。イベントは、以下の情報を保持します。

  • タイムスタンプ

  • リクエストを一意に特定する診断コンテキストからのコンテキスト識別子

  • トランザクション識別子(可能な場合)

  • ユーザーID

  • アクション・タイプ(つまりDisplayArgumentsAction)

  • ドメイン

  • サーバー名

  • インストゥルメンテーション・スコープ名(たとえばアプリケーション名)

  • 診断モニター名

  • モジュール名

  • コード内でアクションを呼び出した場所 - 次を含みます。

    • クラス名

    • メソッド名

    • メソッド・シグネチャ

    • 行番号

    • スレッド名

  • 診断コンテキストによって保持されるペイロード(存在する場合)

  • beforeモニターにアタッチされたときの入力引数(存在する場合)

  • afterモニターにアタッチされたときの戻り値(存在する場合)

TraceElapsedTimeAction

このアクションは「前後」のアクションで、「前後」のモニター・タイプに対応しています。

TraceElapsedTimeActionは2つのイベント(プログラム実行中の特定の場所の前と後)を生成します。

このアクションが実行されると、関連付けられたジョインポイントの実行前と実行後のタイムスタンプがキャプチャされます。そして、これらの差を計算することで経過時間が算出されます。このアクションでは、イベント・アーカイブにディスパッチされるインストゥルメンテーション・イベントが生成されます。経過時間は、イベント・ペイロードとして格納されます。イベントは、以下の情報を保持します。

  • タイムスタンプ

  • リクエストを一意に特定する診断コンテキストからのコンテキスト識別子

  • トランザクション識別子(可能な場合)

  • ユーザーID

  • アクション・タイプ(つまりTraceElapsedTimeAction)

  • ドメイン

  • サーバー名

  • インストゥルメンテーション・スコープ名(たとえばアプリケーション名)

  • 診断モニター名

  • モジュール名

  • コード内でアクションを呼び出した場所 - 次を含みます。

    • クラス名

    • メソッド名

    • メソッド・シグネチャ

    • 行番号

    • スレッド名

  • 診断コンテキストによって保持されるペイロード(存在する場合)

  • ジョインポイントの処理にかかったナノ秒単位の時間(イベント・ペイロードとして)

TraceMemoryAllocationAction

このアクションは、メソッド呼出しのとき、スレッドにより割り当てられたバイト数をトレースするためにJRockit APIを使用します。このアクションは、メソッド呼出し内に割り当てられたメモリーがトレースされる点を除けば、TraceElapsedTimeActionとよく似ています。

TraceMemoryAllocationActionのアクションは次のとおりです。

  • 永続化されたインストゥルメンテーション・イベントを作成します。

  • 委任とカスタム監視から使用できます。

StackDumpAction

このアクションは「ステートレス」のアクションで、「前」および「後」のモニター・タイプに対応しています。

StackDumpActionは、プログラムの実行中に作用場所にインストゥルメンテーション・イベントを生成し、スタック・ダンプをキャプチャします。

このアクションが実行されると、イベント・アーカイブにディスパッチされるインストゥルメンテーション・イベントが生成されます。スタック・トレースは、イベント・ペイロードとしてキャプチャされます。イベントは、以下の情報を保持します。

  • タイムスタンプ

  • リクエストを一意に特定する診断コンテキストからのコンテキスト識別子

  • トランザクション識別子(可能な場合)

  • ユーザーID

  • アクション・タイプ(つまりStackDumpAction)

  • ドメイン

  • サーバー名

  • インストゥルメンテーション・スコープ名(たとえばアプリケーション名)

  • 診断モニター名

  • モジュール名

  • コード内でアクションを呼び出した場所 - 次を含みます。

    • クラス名

    • メソッド名

    • メソッド・シグネチャ

    • 行番号

    • スレッド名

  • 診断コンテキストによって保持されるペイロード(存在する場合)

  • スタック・トレース(イベント・ペイロードとして)

ThreadDumpAction

このアクションは「ステートレス」のアクションで、「前」および「後」のモニター・タイプに対応しています。

ThreadDumpActionは、プログラムの実行中に影響のある場所にインストゥルメンテーション・イベントを生成し、スレッド・ダンプをキャプチャします(基底のVMのサポート対象となっている場合)。JDK 1.5 (Oracle JRockitおよびSun)ではこのアクションをサポートします。

このアクションでは、イベント・アーカイブにディスパッチされるインストゥルメンテーション・イベントが生成されます。このアクションはJRockit JVMでのみ使用できます。他のJVMの場合は無視されます。スレッド・ダンプは、イベント・ペイロードとしてキャプチャされます。イベントは、以下の情報を保持します。

  • タイムスタンプ

  • リクエストを一意に特定する診断コンテキストからのコンテキスト識別子

  • トランザクション識別子(可能な場合)

  • ユーザーID

  • アクション・タイプ(つまりThreadDumpAction)

  • ドメイン

  • サーバー名

  • インストゥルメンテーション・スコープ名(たとえばアプリケーション名)

  • 診断モニター名

  • モジュール名

  • コード内でアクションを呼び出した場所 - 次を含みます。

    • クラス名

    • メソッド名

    • メソッド・シグネチャ

    • 行番号

    • スレッド名

  • 診断コンテキストによって保持されるペイロード(存在する場合)

  • スレッド・ダンプ(イベント・ペイロードとして)

MethodInvocationStatisticsAction

このアクションは「前後」のアクションで、「前後」のモニター・タイプに対応しています。

実施のたびにイベントを永続化することなしに、MethodInvocationStatisticsActionはインメモリーでのメソッド呼出しの統計を計算します。そのため、収集された情報はInstrumentationRuntimeMBeanを通じて利用可能になります。収集された情報は、ハーベスタ・コンポーネントや監視および通知コンポーネントで使用できます。これによって、インストゥルメンテーション・システムからのリクエスト情報と他の実行時MBeanからのメトリック情報を結合可能な監視ルールを作成することができます。

任意のスコープのWLDFInstrumentationRuntimeMBeanインスタンスは、MethodInvocationStatisics属性を使用して、構成されている「前後」の診断モニターにアタッチされているMethodInvocationStatisticsActionインスタンスから収集したデータを公開します。この属性が、以下のセマンティクスを持つネストされた構造を持つマップを返します。

  MethodInvocationStatistics::= Map<className, MethodMap>
  MethodMap::= Map<methodName, MethodParamsSignatureMap>
  MethodParamsSignatureMap::= Map<MethodParamsSignature, MethodDataMap>
  MethodDataMap::= <MetricName, Statistic>
  MetricName:= min | max | avg | count | sum | sum_of_squares | std_deviation

エントリの最初のレベルのキーは、完全修飾クラス名です。次のレベルではMethodMapというマップを生成しています。このマップのキーはメソッドの名前と別のネストされたマップ構造MethodParamsSignatureMapの値です。MethodParamsSignatureMapは、メソッド入力引数シグネチャの文字列表現をキーとするエントリを持ち、別のマップ・インスタンスMethodDataMapを返します。MethodDataMapは、サポートされている様々なメトリックの名前用の固定されたキー・セットを持ちます。

MethodInvocationStatisticsActionデータを収集するためのハーベスタの構成

MethodInvocationStatisticsActionインスタンスで集めたデータをハーベスタで収集するように構成するには、WLDFHarvesterBeanのインスタンスを次の指定を使用して構成する必要があります。

Name=weblogic.management.runtime.WLDFInstrumentationRuntimeMBean

スコープはインスタンスの構成によって選択されます。

属性の指定では、ハーベスタで収集するデータを定義します。マップの一連の要素には、次の表記法でアクセスします。

MethodInvocationStatistics(className)(methodName)(methodParamSignature)
(metricName)

説明:

  • classNameは、Javaクラス名の完全修飾名。クラス名にはワイルドカード「*」を使用することができます。

  • methodNameは任意のクラスから特定のメソッドを選択します。メソッド名にはワイルドカード「*」を使用することができます。

  • methodParamSignatureはメソッドの入力引数の型をカンマ区切りのリストで表す文字列。シグネチャの指定では、引数名を除いたJava型名のみを含めます。Java言語と同様に、シグネチャ内のパラメータの順序には意味があります。

    この要素ではワイルドカード「*」も使用できるため、メソッドの入力引数の型のリストを完全に指定する必要はありません。「*」は、methodParamSignature式での指定箇所以降の位置で0個以上の引数の型に一致します。

    また、「?」のワイルドカードも使用することができます。これは、パラメータの型の順序付けられたリスト内の任意の位置で単一の引数の型に一致します。

    どちらのワイルドカードも式内の任意の場所に指定できます。「MethodInvocationStatisticsの例」を参照してください。

  • metricNameは、収集するために統計を示します。このキー内でワイルドカード「*」を使用すると、サポートされているすべてのメトリックを収集できます。

MethodInvocationStatisticsの例

オーバーロードされた以下のメソッドを持つクラスを考えます。

package.com.foo;
public interface Bar {
  public void doIt();
  public void doIt(int a);
  public void doit(int a, String s)
  public void doIt(Stringa, int b);
  public void doIt(String a, String b);
  public void doIt(String[] a);
  public void doNothing();
  public void doNothing(com.foo.Baz);
}

次に、様々な統計データを収集する方法の例を示します。

MethodInvocationStatistics(com.foo.Bar)(*)(*)(*)

com.Foo.Barのクラスにおけるすべてのメソッド用にすべての統計を収集します。

MethodInvocationStatistics(com.foo.Bar)(doIt)()(*)

入力引数を持っていないdoIt()メソッド用にすべての統計を収集します。

MethodInvocationStatistics(com.foo.Bar)(doIt)(*)(*)

doIt()メソッド用にすべての統計を収集します。

MethodInvocationStatistics(com.foo.Bar)(doIt)(int, *)(*)

doIt(int)およびdoIt(int、String)メソッド用に、すべての統計を収集します。

MethodInvocationStatistics(com.foo.Bar)(doIt)(String[])(*)

doIt(String[])メソッド用にすべての統計を収集します。配列パラメータは、[]ペアを型名に従って使用します。ハーベスタ に、スペースは重要ではありません。

MethodInvocationStatistics(com.foo.Bar)(doIt)(String, ?)(*)

2つの入力パラメータを持ち、最初の引数の型がStringであるdoItメソッドのすべての統計データを収集します。例のクラスを使用して、これはdoIt (ストリング、int)とdoIt (ストリング、String)メソッドに合っています。

MethodInvocationStatistics(com.foo.Bar)(doNothing)(com.foo.Baz)(min|max)

doNothing()メソッドに対して、タイプcom.foo.Bazの単一入力パラメータでmaxとmin実行時間を収集します。


注意:

classNameにワイルドカードを使用すると、パフォーマンスに影響する場合があります。

MethodInvocationStatisticsメトリックに基づく監視ルールの構成

監視ルールでMethodInvocationStatisticsメトリックを使用するには、前の項で説明した同じ構文を使用できます。MetricName要素をワイルドカード検索しない重要な監視ルールを作成できる、そして、特定のメソッドとしてmin、max、avg、count、sum、sum_of_squares、またはstd_deviation変数を指定することができます。

JMXによるデータの収集

JMXを使用してデータを収集する際にWLDFInstrumentationRuntimeMBeanに対してgetAttribute(“MethodInvocationStatistics”)メソッドを呼び出すと、サーバーのパフォーマンスに影響する場合があります。これは、インストゥルメントされたクラスによっては、ネストされたマップ構造に高価なシリアライゼーションを伴う大量のデータが含まれる場合があるためです。

JMXを使用してデータを収集する場合は、getMethodInvocationStatisticsData(String)メソッドを使用することをお勧めします。

MethodMemoryAllocationStatisticsAction

MethodMemoryAllocationStatisticsActionでは、メソッド呼出しのとき、スレッドが割り当てられたバイト数をトレースするためにJRockit APIが使用されます。メモリー割当てにあるメモリー内に統計が保存されます。ただし、このアクションによりインストゥルメンテーション・イベントは作成されません。

MethodMemoryAllocationStatisticsActionは、MethodMemoryAllocationStatisticsActionにより追跡される統計がメソッド呼出し内で割り当てられるメモリーに関連付けられる点を除けば、既存のMethodInvocationStatisticsActionとよく似ています。

MethodInvocationStatisticsActionは、インストゥルメンテーション・イベントを作成しません。JRockitが使用可能な場合、WLDFInstrumentationRuntimeMBeanを介して統計が使用できます。

各メソッド用に、次の統計が保持されます。

  • count

  • min

  • max

  • avg

  • sum

  • sum_of_squares

  • std_deviation