WebLogic 診断フレームワークのコンフィグレーションと使い方

     前  次    新しいウィンドウで目次を開く     
ここから内容の開始

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
組み込み
要求がサーバに届く場所。
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_SessionEjbBusinessMethods
Before
Stateless
すべての SessionBean メソッドの入り口。これは標準の EJB メソッドではない。
EJB_Before_SessionEjbMethods
Before
Stateless
以下のメソッドの入り口。
SessionBean.setSessionContext
SessionBean.ejbRemove
SessionBean.ejbActivate
SessionBean.ejbPassivate
EJB_Before_SessionEjbSemanticMethods
Before
Stateless
以下のメソッドの入り口。
SessionBean.ejbCreate
SessionBean.ejbPostCreate
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 サブシステムの内部コード。

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

表 B-2 アプリケーション スコープ内で使用する診断モニタ
モニタ名
モニタ タイプ
対応アクション タイプ
ポイントカット
EJB_After_EntityEjbBusinessMethods
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_EntityEjbSemanticMethods
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_SessionEjbBusinessMethods
Around
Around
すべての SessionBean メソッドの入り口と出口。これは標準の EJB メソッドではない。
EJB_After_SessionEjbSemanticMethods
After
Stateless
以下のメソッドの出口。
SessionBean.ejbCreateSessionBean.ejbPostCreate
EJB_Around_SessionEjbSemanticMethods
Around
Around
以下のメソッドの入り口と出口。
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_AsyncMessageReceived
Before
Stateless
以下のメソッドの入り口。
MessageListener.onMessage
JMS_After_AsyncMessageReceived
After
Stateless
以下のメソッドの出口。
MessageListener.onMessage
JMS_Around_AsyncMessageReceived
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_SyncMessageReceived
Before
Stateless
以下のメソッドの呼び出しの前。
MessageConsumer.receive*
JMS_After_SyncMessageReceived
After
Stateless
以下のメソッドの呼び出しの後。
MessageConsumer.receive*
JMS_Around_SyncMessageReceived
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 ルックアップ メソッドの呼び出しの前後。
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_SetMessageDrivenContext
Before
Stateless
以下のメソッドの入り口。
MessageDrivenBean.setMessage
DrivenContext
MDB_After_SetMessageDrivenContext
After
Stateless
以下のメソッドの出口。
MessageDrivenBean.setMessageDrivenContext
MDB_Around_SetMessageDrivenContext
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 は、プログラムの実行中に作用場所に追跡イベントを生成します。以下の情報が生成されます。

DisplayArgumentsAction

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

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

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

TraceElapsedTimeAction

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

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

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

StackDumpAction

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

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

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

ThreadDumpAction

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

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

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


ページの先頭       前  次