ヘッダをスキップ
Oracle® Fusion Middleware Oracle WebLogic Server 診断フレームワークのコンフィグレーションと使い方
11g リリース 1 (10.3.1)
B55523-01
 

目次へ
目次

戻る
戻る
 
次へ
次へ
 

B WLDF インスツルメンテーション ライブラリ

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

インスツルメンテーション ライブラリの項目の使い方については、「インスツルメンテーションのコンフィグレーション」を参照してください。

診断モニタ ライブラリ

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

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

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

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

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

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

Connector_Before_Inbound

Before

Stateless

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

Connector_After_Inbound

サーバ

Stateless

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

Connector_Around_Inbound

Around

Around

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

Connector_Before_Outbound

Before

Stateless

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

Connector_After_Outbound

After

Stateless

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

Connector_Around_Outbound

Around

Around

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

Connector_Before_Tx

Before

Stateless

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

Connector_After_Tx

After

Stateless

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

Connector_Around_Tx

Around

Around

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

Connector_Before_Work

Before

Stateless

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

Connector_After_Work

After

Stateless

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

Connector_Around_Work

Around

Around

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

DyeInjection

Before

組み込み

要求がサーバに届く場所。

JDBC_Before_Commit_Internal

Before

Stateless

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

JDBC_After_Commit_Internal

After

Stateless

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

JDBC_Before_Connection_

Internal

Before

Stateless

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

Driver.connect

DataSource.getConnection

JDBC_After_Connection_Internal

Before

Stateless

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

JDBC_Before_Rollback_Internal

Before

Stateless

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

JDBC_After_Rollback_Internal

After

Stateless

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

JDBC_Before_Start_Internal

Before

Stateless

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

JDBC_After_Start_Internal

After

Stateless

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

JDBC_Before_Statement_

Internal

Before

Stateless

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

JDBC_After_Statement_

Internal

After

Stateless

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

JDBC_After_Reserve_Connection_Internal

After

Stateless

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

JDBC_After_Release_Connection_Internal

After

Stateless

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


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

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

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

EJB_After_EntityEjbBusiness Methods

After

Stateless

すべての EntityBean メソッドの出口。これは標準の EJB メソッドではない。

EJB_Around_EntityEjbBusinessMethods

Around

Around

すべての EntityBean メソッドの入り口と出口。これは標準の EJB メソッドではない。

EJB_After_EntityEjbMethods

After

Stateless

以下のメソッドの出口。

EnitityBean.setEntityContext

EnitityBean.unsetEntityContext

EnitityBean.ejbRemove

EnitityBean.ejbActivate

EnitityBean.ejbPassivate

EnitityBean.ejbLoad

EnitityBean.ejbStore

EJB_Around_EntityEjbMethods

Around

Around

以下のメソッドの出口。

EnitityBean.setEntityContext

EnitityBean.unsetEntityContext

EnitityBean.ejbRemove

EnitityBean.ejbActivate

EnitityBean.ejbPassivate

EnitityBean.ejbLoad

EnitityBean.ejbStore

EJB_After_EntityEjbSemantic Methods

After

Stateless

以下のメソッドの出口。

EnitityBean.set*

EnitityBean.get*

EnitityBean.ejbFind*

EnitityBean.ejbHome*

EnitityBean.ejbSelect*

EnitityBean.ejbCreate*

EnitityBean.ejbPostCreate*

EJB_Around_EntityEjbSemanticMethods

Around

Around

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

EnitityBean.set*

EnitityBean.get*

EnitityBean.ejbFind*

EnitityBean.ejbHome*

EnitityBean.ejbSelect*

EnitityBean.ejbCreate*

EnitityBean.ejbPostCreate*

EJB_After_SessionEjbMethods

After

Stateless

以下のメソッドの出口。

SessionBean.setSessionContext

SessionBean.ejbRemove

SessionBean.ejbActivate

SessionBean.ejbPassivate

EJB_Around_SessionEjbMethods

Around

Around

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

SessionBean.setSessionContext

SessionBean.ejbRemove

SessionBean.ejbActivate

SessionBean.ejbPassivate

EJB_After_SessionEjbBusinessMethods

After

Stateless

すべての SessionBean メソッドの出口。これは標準の EJB メソッドではない。

EJB_Around_SessionEjb

BusinessMethods

Around

Around

すべての SessionBean メソッドの入り口と出口。これは標準の EJB メソッドではない。

EJB_After_SessionEjbSemanticMethods

After

Stateless

以下のメソッドの出口。

SessionBean.ejbCreateSessionBean.ejbPostCreate

EJB_Around_SessionEjb

SemanticMethods

Around

Around

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

SessionBean.ejbCreate

SessionBean.ejbPostCreate

EJB_Before_EntityEjbBusinessMethods

Before

Stateless

すべての EntityBean メソッドの出口。これは標準の EJB メソッドではない。

EJB_Before_EntityEjbMethods

Before

Stateless

以下のメソッドの入り口。

EnitityBean.setEntityContext

EnitityBean.unsetEntityContext

EnitityBean.ejbRemove

EnitityBean.ejbActivate

EnitityBean.ejbPassivate

EnitityBean.ejbLoad

EnitityBean.ejbStore

EJB_Before_EntityEjbSemanticMethods

Before

Stateless

以下のメソッドの入り口。

EnitityBean.set*

EnitityBean.get*

EnitityBean.ejbFind*

EnitityBean.ejbHome*

EnitityBean.ejbSelect*

EnitityBean.ejbCreate*

EnitityBean.ejbPostCreate*

EJB_Before_SessionEjb

BusinessMethods

Before

Stateless

すべての Entitybean メソッドの出口。これは標準の EJB メソッドではない。

EJB_Before_SessionEjbMethods

Before

Stateless

以下のメソッドの入り口。

SessionBean.setSessionContext

SessionBean.ejbRemove

SessionBean.ejbActivate

SessionBean.ejbPassivate

EJB_Before_SessionEjb

SemanticMethods

Before

Stateless

以下のメソッドの入り口。

SessionBean.ejbCreate

SessionBean.ejbPostCreate

HttpSessionDebug

Around

組み込み

getSession - 返された HTTP セッションを調べる

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

getAttribute

setAttribute

removeAttribute

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

JDBC_Before_CloseConnection

Before

Stateless

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

Connection.close

JDBC_After_CloseConnection

After

Stateless

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

Connection.close

JDBC_Around_CloseConnection

Around

Around

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

Connection.close

JDBC_Before_CommitRollback

Before

Stateless

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

Connection.commit

Connection.rollback

JDBC_After_CommitRollback

After

Stateless

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

Connection.commit

Connection.rollback

JDBC_Around_CommitRollback

Around

Around

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

Connection.commit

Connection.rollback

JDBC_Before_Execute

Before

Stateless

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

Statement.execute*

PreparedStatement.execute*

JDBC_After_Execute

After

Stateless

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

Statement.execute*

PreparedStatement.execute*

JDBC_Around_Execute

Around

Around

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

Statement.execute*

PreparedStatement.execute*

JDBC_Before_GetConnection

Before

Stateless

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

Driver.connect

DataSource.getConnection

JDBC_After_GetConnection

After

Stateless

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

Driver.connect

DataSource.getConnection

JDBC_Around_GetConnection

Around

Around

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

Driver.connect

DataSource.getConnection

JDBC_Before_Statement

Before

Stateless

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

Connection.prepareStatement

Connection.prepareCall

Statement.addBatch

RowSet.setCommand

JDBC_After_Statement

After

Stateless

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

Connection.prepareStatement

Connection.prepareCall

Statement.addBatch

RowSet.setCommand

JDBC_Around_Statement

Around

Around

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

Connection.prepareStatement

Connection.prepareCall

Statement.addBatch

RowSet.setCommand

JMS_Before_AsyncMessage

Received

Before

Stateless

以下のメソッドの入り口。

MessageListener.onMessage

JMS_After_AsyncMessage

Received

After

Stateless

以下のメソッドの出口。

MessageListener.onMessage

JMS_Around_AsyncMessage

Received

Around

Around

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

MessageListener.onMessage

JMS_Before_MessageSent

Before

Stateless

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

QueSender send

JMS_After_MessageSent

After

Stateless

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

QueSender send

JMS_Around_MessageSent

Around

Around

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

QueSender send

JMS_Before_SyncMessage

Received

Before

Stateless

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

MessageConsumer.receive*

JMS_After_SyncMessage

Received

After

Stateless

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

MessageConsumer.receive*

JMS_Around_SyncMessage

Received

Around

Around

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

MessageConsumer.receive*

JMS_Before_TopicPublished

Before

Stateless

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

TopicPublisher.publish

JMS_After_TopicPublished

After

Stateless

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

TopicPublisher.publish

JMS_Around_TopicPublished

Around

Around

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

TopicPublisher.publish

JNDI_Before_Lookup

Before

Stateless

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

Context.lookup*

JNDI_After_Lookup

After

Stateless

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

Context.lookup*

JNDI_Around_Lookup

Around

Around

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

Context.lookup*

JTA_Before_Commit

Before

Stateless

以下のメソッドの入り口。

UserTransaction.commit

JTA_After_Commit

After

StatelessAdvice

以下のメソッドの出口。

UserTransaction.commit

JTA_Around_Commit

Around

Around

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

UserTransaction.commit

JTA_Before_Rollback

Before

Stateless

以下のメソッドの入り口。

UserTransaction.rollback

JTA_After_Rollback

After

StatelessAdvice

以下のメソッドの出口。

UserTransaction.rollback

JTA_Around_Rollback

Around

Around

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

UserTransaction.rollback

JTA_Before_Start

Before

Stateless

以下のメソッドの入り口。

UserTransaction.begin

JTA_After_Start

After

StatelessAdvice

以下のメソッドの出口。

UserTransaction.begin

JTA_Around_Start

Around

Around

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

UserTransaction.begin

MDB_Before_MessageReceived

Before

Stateless

以下のメソッドの入り口。

MessageDrivenBean.onMessage

MDB_After_MessageReceived

After

Stateless

以下のメソッドの出口。

MessageDrivenBean.onMessage

MDB_Around_MessageReceived

Around

Around

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

MessageDrivenBean.onMessage

MDB_Before_Remove

Before

Stateless

以下のメソッドの入り口。

MessageDrivenBean.ejbRemove

MDB_After_Remove

After

Stateless

以下のメソッドの出口。

MessageDrivenBean.ejbRemove

MDB_Around_Remove

Around

Around

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

MessageDrivenBean.ejbRemove

MDB_Before_SetMessageDriven

Context

Before

Stateless

以下のメソッドの入り口。

MessageDrivenBean.setMessage

DrivenContext

MDB_After_SetMessageDriven

Context

After

Stateless

以下のメソッドの出口。

MessageDrivenBean.setMessageDrivenContext

MDB_Around_SetMessageDriven

Context

Around

Around

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

MessageDrivenBean.setMessageDrivenContext

Servlet_Before_Service

Before

Stateless

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

HttpJspPage._jspService

Servlet.service

HttpServlet.doGet

HttpServlet.doPost

Filter.doFilter

Servlet_After_Service

After

Stateless

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

HttpJspPage._jspService

Servlet.service

HttpServlet.doGet

HttpServlet.doPost

Filter.doFilter

Servlet_Around_Service

Around

Around

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

HttpJspPage._jspService

Servlet.service

HttpServlet.doGet

HttpServlet.doPost

Filter.doFilter

Servlet_Before_Session

Before

Stateless

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

HttpServletRequest.getSession

HttpSession.setAttribute/

putValue

HttpSession.getAttribute/

getValue

HttpSession.removeAttribute/

removeValue

HttpSession.invalidate

Servlet_Around_Session

Around

Around

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

HttpServletRequest.getSession

HttpSession.setAttribute/

putValue

HttpSession.getAttribute/

getValue

HttpSession.removeAttribute/

removeValue

HttpSession.invalidate

Servlet_After_Session

After

Stateless

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

HttpServletRequest.getSession

HttpSession.setAttribute/

putValue

HttpSession.getAttribute/

getValue

HttpSession.removeAttribute/

removeValue

HttpSession.invalidate

Servlet_Before_Tags

Before

Stateless

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

Tag.doStartTag

Tag.doEndTag

Servlet_After_Tags

After

Stateless

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

Tag.doStartTag

Tag.doEndTag

Servlet_Around_Tags

Around

Around

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

Tag.doStartTag

Tag.doEndTag


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

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

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

TraceAction

このアクションは Stateless アクションで、Before および After モニタ タイプに対応しています。

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

  • タイムスタンプ

  • 要求をユニークに特定する診断コンテキストからのコンテキスト識別子

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

  • ユーザ ID

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

  • ドメイン

  • サーバ名

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

  • 診断モニタ名

  • モジュール名

  • コード内でアクションを呼び出した場所、以下を含む。

    • クラス名

    • メソッド名

    • メソッド シグネチャ

    • 行番号

    • スレッド名

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

DisplayArgumentsAction

このアクションは Stateless アクションで、Before および After モニタ タイプに対応しています。

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

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

  • タイムスタンプ

  • 要求をユニークに特定する診断コンテキストからのコンテキスト識別子

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

  • ユーザ ID

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

  • ドメイン

  • サーバ名

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

  • 診断モニタ名

  • モジュール名

  • コード内でアクションを呼び出した場所、以下を含む。

    • クラス名

    • メソッド名

    • メソッド シグネチャ

    • 行番号

    • スレッド名

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

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

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

TraceElapsedTimeAction

このアクションは Around アクションで、Around モニタ タイプに対応しています。

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

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

  • タイムスタンプ

  • 要求をユニークに特定する診断コンテキストからのコンテキスト識別子

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

  • ユーザ ID

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

  • ドメイン

  • サーバ名

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

  • 診断モニタ名

  • モジュール名

  • コード内でアクションを呼び出した場所、以下を含む。

    • クラス名

    • メソッド名

    • メソッド シグネチャ

    • 行番号

    • スレッド名

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

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

StackDumpAction

このアクションは Stateless アクションで、Before および After モニタ タイプに対応しています。

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

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

  • タイムスタンプ

  • 要求をユニークに特定する診断コンテキストからのコンテキスト識別子

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

  • ユーザ ID

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

  • ドメイン

  • サーバ名

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

  • 診断モニタ名

  • モジュール名

  • コード内でアクションを呼び出した場所、以下を含む。

    • クラス名

    • メソッド名

    • メソッド シグネチャ

    • 行番号

    • スレッド名

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

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

ThreadDumpAction

このアクションは Stateless アクションで、Before および After モニタ タイプに対応しています。

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

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

  • タイムスタンプ

  • 要求をユニークに特定する診断コンテキストからのコンテキスト識別子

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

  • ユーザ ID

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

  • ドメイン

  • サーバ名

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

  • 診断モニタ名

  • モジュール名

  • コード内でアクションを呼び出した場所、以下を含む。

    • クラス名

    • メソッド名

    • メソッド シグネチャ

    • 行番号

    • スレッド名

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

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

MethodInvocationStatisticsAction

このアクションは Around アクションで、Around モニタ タイプに対応しています。

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

任意のスコープの WLDFInstrumentationRuntimeMBean インスタンスは、MethodInvocationStatisics 属性を使用して、コンフィグレーションされている診断 Around モニタにアタッチされている 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) メソッドを使用することをお勧めします。