Oracle® Fusion Middleware Oracle WebLogic Server診断フレームワークの構成と使い方 11g リリース1(10.3.5) B60994-03 |
|
前 |
次 |
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 |
前 |
ステートレス |
すべてのSessionBeanメソッドの出口。これは標準の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 |
後 |
ステートレス・アドバイス |
以下のメソッドの出口。 UserTransaction.commit |
JTA_Around_Commit |
前後 |
前後 |
以下のメソッドの入口と出口。 UserTransaction.commit |
JTA_Before_Rollback |
前 |
ステートレス |
以下のメソッドの入口。 UserTransaction.rollback |
JTA_After_Rollback |
後 |
ステートレス・アドバイス |
以下のメソッドの出口。 UserTransaction.rollback |
JTA_Around_Rollback |
前後 |
前後 |
以下のメソッドの入口と出口。 UserTransaction.rollback |
JTA_Before_Start |
前 |
ステートレス |
以下のメソッドの入口。 UserTransaction.begin |
JTA_After_Start |
後 |
ステートレス・アドバイス |
以下のメソッドの出口。 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は、プログラムの実行中に作用場所に追跡イベントを生成します。以下の情報が生成されます。
タイムスタンプ
リクエストを一意に特定する診断コンテキストからのコンテキスト識別子
トランザクション識別子(可能な場合)
ユーザーID
アクション・タイプ(つまりTraceAction)
ドメイン
サーバー名
インストゥルメンテーション・スコープ名(たとえばアプリケーション名)
診断モニター名
モジュール名
コード内でアクションを呼び出した場所 - 次を含みます。
クラス名
メソッド名
メソッド・シグネチャ
行番号
スレッド名
診断コンテキストによって保持されるペイロード(存在する場合)
このアクションは「ステートレス」のアクションで、「前」および「後」のモニター・タイプに対応しています。
DisplayArgumentsActionは、プログラムの実行中に作用場所にインストゥルメンテーション・イベントを生成し、メソッドの引数または戻り値をキャプチャします。
このアクションが実行されると、イベント・アーカイブにディスパッチされるインストゥルメンテーション・イベントが発生します。インストゥルメンテーション・イベントがbeforeモニターにアタッチされた場合は、ジョインポイントへの入力引数(たとえばメソッド引数)がキャプチャされます。インストゥルメンテーション・イベントがafterモニターにアタッチされた場合は、ジョインポイントからの戻り値がキャプチャされます。イベントは、以下の情報を保持します。
タイムスタンプ
リクエストを一意に特定する診断コンテキストからのコンテキスト識別子
トランザクション識別子(可能な場合)
ユーザーID
アクション・タイプ(つまりDisplayArgumentsAction)
ドメイン
サーバー名
インストゥルメンテーション・スコープ名(たとえばアプリケーション名)
診断モニター名
モジュール名
コード内でアクションを呼び出した場所 - 次を含みます。
クラス名
メソッド名
メソッド・シグネチャ
行番号
スレッド名
診断コンテキストによって保持されるペイロード(存在する場合)
beforeモニターにアタッチされたときの入力引数(存在する場合)
afterモニターにアタッチされたときの戻り値(存在する場合)
このアクションは「前後」のアクションで、「前後」のモニター・タイプに対応しています。
TraceElapsedTimeActionは2つのイベント(プログラム実行中の特定の場所の前と後)を生成します。
このアクションが実行されると、関連付けられたジョインポイントの実行前と実行後のタイムスタンプがキャプチャされます。そして、これらの差を計算することで経過時間が算出されます。このアクションでは、イベント・アーカイブにディスパッチされるインストゥルメンテーション・イベントが生成されます。経過時間は、イベント・ペイロードとして格納されます。イベントは、以下の情報を保持します。
タイムスタンプ
リクエストを一意に特定する診断コンテキストからのコンテキスト識別子
トランザクション識別子(可能な場合)
ユーザーID
アクション・タイプ(つまりTraceElapsedTimeAction)
ドメイン
サーバー名
インストゥルメンテーション・スコープ名(たとえばアプリケーション名)
診断モニター名
モジュール名
コード内でアクションを呼び出した場所 - 次を含みます。
クラス名
メソッド名
メソッド・シグネチャ
行番号
スレッド名
診断コンテキストによって保持されるペイロード(存在する場合)
ジョインポイントの処理にかかったナノ秒単位の時間(イベント・ペイロードとして)
このアクションは、メソッド呼出しのとき、スレッドにより割り当てられたバイト数をトレースするためにJRockit APIを使用します。このアクションは、メソッド呼出し内に割り当てられたメモリーがトレースされる点を除けば、TraceElapsedTimeActionとよく似ています。
TraceMemoryAllocationActionのアクションは次のとおりです。
永続化されたインストゥルメンテーション・イベントを作成します。
委任とカスタム監視から使用できます。
このアクションは「ステートレス」のアクションで、「前」および「後」のモニター・タイプに対応しています。
StackDumpActionは、プログラムの実行中に作用場所にインストゥルメンテーション・イベントを生成し、スタック・ダンプをキャプチャします。
このアクションが実行されると、イベント・アーカイブにディスパッチされるインストゥルメンテーション・イベントが生成されます。スタック・トレースは、イベント・ペイロードとしてキャプチャされます。イベントは、以下の情報を保持します。
タイムスタンプ
リクエストを一意に特定する診断コンテキストからのコンテキスト識別子
トランザクション識別子(可能な場合)
ユーザーID
アクション・タイプ(つまりStackDumpAction)
ドメイン
サーバー名
インストゥルメンテーション・スコープ名(たとえばアプリケーション名)
診断モニター名
モジュール名
コード内でアクションを呼び出した場所 - 次を含みます。
クラス名
メソッド名
メソッド・シグネチャ
行番号
スレッド名
診断コンテキストによって保持されるペイロード(存在する場合)
スタック・トレース(イベント・ペイロードとして)
このアクションは「ステートレス」のアクションで、「前」および「後」のモニター・タイプに対応しています。
ThreadDumpActionは、プログラムの実行中に影響のある場所にインストゥルメンテーション・イベントを生成し、スレッド・ダンプをキャプチャします(基底のVMのサポート対象となっている場合)。JDK 1.5 (Oracle JRockitおよびSun)ではこのアクションをサポートします。
このアクションでは、イベント・アーカイブにディスパッチされるインストゥルメンテーション・イベントが生成されます。このアクションはJRockit JVMでのみ使用できます。他のJVMの場合は無視されます。スレッド・ダンプは、イベント・ペイロードとしてキャプチャされます。イベントは、以下の情報を保持します。
タイムスタンプ
リクエストを一意に特定する診断コンテキストからのコンテキスト識別子
トランザクション識別子(可能な場合)
ユーザーID
アクション・タイプ(つまりThreadDumpAction)
ドメイン
サーバー名
インストゥルメンテーション・スコープ名(たとえばアプリケーション名)
診断モニター名
モジュール名
コード内でアクションを呼び出した場所 - 次を含みます。
クラス名
メソッド名
メソッド・シグネチャ
行番号
スレッド名
診断コンテキストによって保持されるペイロード(存在する場合)
スレッド・ダンプ(イベント・ペイロードとして)
このアクションは「前後」のアクションで、「前後」のモニター・タイプに対応しています。
実施のたびにイベントを永続化することなしに、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インスタンスで集めたデータをハーベスタで収集するように構成するには、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メトリックを使用するには、前の項で説明した同じ構文を使用できます。MetricName要素をワイルドカード検索しない重要な監視ルールを作成できる、そして、特定のメソッドとしてmin、max、avg、count、sum、sum_of_squares、またはstd_deviation変数を指定することができます。
MethodMemoryAllocationStatisticsActionでは、メソッド呼出しのとき、スレッドが割り当てられたバイト数をトレースするためにJRockit APIが使用されます。メモリー割当てにあるメモリー内に統計が保存されます。ただし、このアクションによりインストゥルメンテーション・イベントは作成されません。
MethodMemoryAllocationStatisticsActionは、MethodMemoryAllocationStatisticsActionにより追跡される統計がメソッド呼出し内で割り当てられるメモリーに関連付けられる点を除けば、既存のMethodInvocationStatisticsActionとよく似ています。
MethodInvocationStatisticsActionは、インストゥルメンテーション・イベントを作成しません。JRockitが使用可能な場合、WLDFInstrumentationRuntimeMBeanを介して統計が使用できます。
各メソッド用に、次の統計が保持されます。
count
min
max
avg
sum
sum_of_squares
std_deviation