ページの先頭行へ戻る
Interstage Application Server/Interstage Web Server Express Java EE運用ガイド
FUJITSU Software

2.10 EJB/JTAメソッドログ

EJB/JTAメソッドログ機能は以下の情報をサーバーログにロギングする機能です。本機能によりEJBアプリケーションメソッドの呼び出しシーケンスが確認できます。本機能はEJBアプリケーションの開発時のデバッグに利用してください。

EJB/JTAメソッドログが出力する情報

  1. クライアントが呼び出したEJBアプリケーションのメソッドの情報

    クライアントアプリケーションから呼び出されたEJBアプリケーションの以下のメソッド情報を出力します。

    • メソッド呼出し時の情報

    • メソッド復帰時の情報

    • メソッドで例外が発生したときの情報

    出力される情報の詳細は「出力形式」を参照してください。

    本情報が出力されるのは下記メソッド呼出し時です。


    ■クライアントが呼び出すEJBアプリケーションがEJB2.1以前のアプリケーションの場合

    Session Bean

    Entity Bean

    Homeインタフェースメソッド

    create
    remove(handle)
    remove(primarykey)

    create
    remove(handle)
    remove(primarykey)
    findByPrimaryKey
    find<Enumeration型>
    find<Collection型>
    find<Object>
    ejbHomeメソッド

    Remoteインタフェースメソッド

    ビジネスメソッド
    remove

    ビジネスメソッド
    remove

    LocalHomeインタフェースメソッド

    create
    remove

    create
    remove(primarykey)
    findByPrimaryKey
    find<Enumeration型>

    Localインタフェースメソッド

    ビジネスメソッド
    remove

    ビジネスメソッド
    remove


    ■クライアントが呼び出すEJBアプリケーションがEJB3.0のアプリケーションの場合

    Session Bean

    Remoteビジネスインタフェースメソッド

    ビジネスメソッド

    Localビジネスインタフェースメソッド

    ビジネスメソッド


    注意

    • EJB3.0ではEntity Beanは非推奨です。

    • EJB3.0のSession BeanではRemote Homeインターフェース、Local HomeインターフェースはEJBコンテナが自動で作成します。EJB/JTAメソッドログ機能では以下のように”GenericEJBHome_”が付加されたインターフェース名として出力されます。

      com.sun.ejb.codegen.GenericEJBHome_Generated


  2. EJBコンテナが呼び出したメソッドの情報

    EJBアプリケーションのメソッド呼出し時の以下の情報を出力します。

    • メソッド呼出し時の情報

    • メソッド復帰時の情報

    • メソッドで例外が発生したときの情報

    出力される情報の詳細は「出力形式」を参照してください。


  3. javax.transaction.TransactionManagerのAPI情報

    EJBコンテナのトランザクション制御やjavax.transaction.UserTransactionのAPIで呼び出された以下のjavax.transaction.TransactionManagerのAPI情報を出力します。

    • トランザクションの開始(begin)

    • トランザクションの完了(commit/rollback)

    • トランザクションにロールバックを指定(setRollbackOnly)

    • トランザクションの中断/再開(suspend/resume)

    出力される情報の詳細は「出力形式」を参照してください。

注意

  • 本機能はアプリケーション開発時のデバッグに利用してください。

  • IJServerクラスタに配備されたすべてのJava EEアプリケーションのメソッドの呼び出し情報が、サーバーログへ出力されます。

  • Java EEアプリケーションをスレッド多重で動作させた場合、メソッドの呼び出し情報がスレッドごとに交錯して出力されますので、スレッド多重では使用しないでください。

出力形式

EJB/JTAメソッドログ機能でFINEを指定すると以下の情報が出力されます。

  1. クライアントが呼び出したEJBアプリケーションのメソッドの情報の出力形式

    • クライアントからのメソッド呼出し時

      CLIENT ENTRY: アプリケーション名 EJB名 インターフェース名.メソッド名


    • クライアントが呼び出したメソッド復帰時

      CLIENT RETURN: アプリケーション名 EJB名 インターフェース名.メソッド名


    • クライアントが呼び出したエラー復帰時

      CLIENT THROW: アプリケーション名 EJB名 インターフェース名.メソッド名 例外クラス名: 例外詳細文字列


    以下に出力される項目と内容について示します。

    出力項目

    説明

    アプリケーション名

    EJBアプリケーション配備時に設定したアプリケーション名が表示されます。デフォルト値はファイル拡張子を除いた値です。

    EARモジュールで配備した場合、以下の形式で出力します。

    アプリケーション名#モジュール名

    EJB-JARモジュール単体で配備した場合、アプリケーション名のみ出力します。

    EJB名

    EJB2.1以前のアプリケーションの場合、Deploymet Descriptor ejb-jar.xmlのejb-nameタグの値が出力されます。
    EJB3.0アプリケーションの場合、@Statefulまたは@Sessionのnameの値が出力されます。

    インターフェース名

    クライアントアプリケーションが呼び出したインターフェース名が出力されます。

    メソッド名

    メソッド名を出力します。

    例外クラス名

    メソッド呼出しで例外が発生した場合の例外クラス名を示します。

    例外詳細文字列

    メソッド呼出しで発生した例外に詳細文字列が含まれている場合は、その詳細文字列を出力します。


    出力例1(メソッド情報 正常系)

    [25/06/2010 08:49:26.125 +0900] ISJEE: INFO: ISJEE_EJB_METHODLOG0001: CLIENT ENTRY: EJBapp SampleBean com.fujitsu.jccc.cbs.SampleRemoteIF.businessMethod: ThreadID=15,ThreadName=httpWorkerThread-28090-5
    [25/06/2010 08:49:27.546 +0900] ISJEE: INFO: ISJEE_EJB_METHODLOG0002: CLIENT RETURN: EJBapp SampleBean com.fujitsu.jccc.cbs.SampleRemoteIF.businessMethod: ThreadID=15,ThreadName=httpWorkerThread-28090-5


    出力例2(メソッド情報 異常系)

    [25/06/2010 08:49:26.125 +0900] ISJEE: INFO: ISJEE_EJB_METHODLOG0001: CLIENT ENTRY: EJBapp SampleBean com.fujitsu.jccc.cbs.SampleRemoteIF.businessMethod: ThreadID=15,ThreadName=httpWorkerThread-28090-5
    [25/06/2010 08:49:27.546 +0900] ISJEE: INFO: ISJEE_EJB_METHODLOG0003: CLIENT THROW: EJBapp SampleBean com.fujitsu.jccc.cbs.SampleRemoteIF.businessMethod: java.rmi.RemoteException: Attempt to invoke container with null invocation method: ThreadID=15,ThreadName=httpWorkerThread-28090-5


  2. EJBコンテナが呼び出したメソッドの情報の出力形式

    • メソッド呼出し時

      ENTRY: アプリケーション名 EJB名 クラス名.メソッド名


    • メソッド復帰時

      RETURN: アプリケーション名 EJB名 クラス名.メソッド名


    • エラー復帰時

      THROW: アプリケーション名 EJB名 クラス名.メソッド名 例外クラス名: 例外詳細文字列


    以下に出力される項目と内容について示します。

    出力項目

    説明

    アプリケーション名

    EJBアプリケーション配備時に設定したアプリケーション名が表示されます。デフォルト値はファイル拡張子を除いた値です。

    EARモジュールで配備した場合、以下の形式で出力します。

    アプリケーション名#モジュール名

    EJB-JARモジュール単体で配備した場合、アプリケーション名のみ出力します。

    EJB名

    EJB2.1以前のアプリケーションの場合、Deploymet Descriptor ejb-jar.xmlのejb-nameタグの値です。
    EJB3.0アプリケーションの場合、@Statefulまたは@Sessionのnameの値です。

    クラス名

    EJBコンテナが呼び出したEJBアプリケーションのBeanクラス名が出力されます。

    メソッド名

    メソッド名を出力します。

    例外クラス名

    メソッド呼出しで例外が発生した場合の例外クラス名を示します。

    例外詳細文字列

    メソッド呼出しで発生した例外に詳細文字列が含まれている場合は、その詳細文字列を出力します。


    出力例1(メソッド情報 正常系)

    [25/06/2010 08:49:26.125 +0900] ISJEE: INFO: ISJEE_EJB_METHODLOG0001: ENTRY: EJBapp SampleBean com.fujitsu.jccc.cbs.SampleBean.businessMethod : ThreadID=15,ThreadName=httpWorkerThread-28090-5
    [25/06/2010 08:49:27.546 +0900] ISJEE: INFO: ISJEE_EJB_METHODLOG0002: RETURN: EJBapp SampleBean com.fujitsu.jccc.cbs.SampleBean.businessMethod: ThreadID=15,ThreadName=httpWorkerThread-28090-5


    出力例2(メソッド情報 異常系)

    [25/06/2010 08:49:26.125 +0900] ISJEE: INFO: ISJEE_EJB_METHODLOG0001: ENTRY: EJBapp SampleBean com.fujitsu.jccc.cbs.SampleBean.businessMethod: ThreadID=15,ThreadName=httpWorkerThread-28090-5
    [25/06/2010 08:49:27.546 +0900] ISJEE: INFO: ISJEE_EJB_METHODLOG0003: THROW: EJBapp SampleBean com.fujitsu.jccc.cbs.SampleBean.businessMethod: java.rmi.RemoteException: Attempt to invoke container with null invocation method: ThreadID=15,ThreadName=httpWorkerThread-28090-5


  3. javax.transaction.TransactionManagerのAPI情報

    • トランザクション制御開始時

      ENTRY: javax.transaction.TransactionManager メソッド名


    • トランザクション制御完了時

      RETURN: javax.transaction.TransactionManager メソッド名


    • エラー発生時

      THROW: javax.transaction.TransactionManager メソッド名 例外クラス名: 例外詳細文字列


    以下に出力される項目と内容について示します。

    出力項目

    説明

    メソッド名

    メソッド名を示します。

    例外クラス名

    メソッド呼出しで例外が発生した場合の例外クラス名を示します。

    例外詳細文字列

    メソッド呼出しで発生した例外に詳細文字列が含まれている場合は、その詳細文字列を出力します。


    出力例1(トランザクション制御情報 正常系)

    [25/06/2010 08:49:26.125 +0900] ISJEE: INFO: ISJEE_JTA_METHODLOG0001: ENTRY: javax.transaction.TransactionManager begin: ThreadID=15,ThreadName=httpWorkerThread-28090-5
    [25/06/2010 08:49:26.125 +0900] ISJEE: INFO: ISJEE_JTA_METHODLOG0002: RETURN: javax.transaction.TransactionManager begin: ThreadID=15,ThreadName=httpWorkerThread-28090-5


    出力例2(トランザクション制御情報 異常系)

    [25/06/2010 08:49:26.125 +0900] ISJEE: INFO: ISJEE_JTA_METHODLOG0001: ENTRY: javax.transaction.TransactionManager begin:ThreadID=15,ThreadName=httpWorkerThread-28090-5
    [25/06/2010 08:49:26.125 +0900] ISJEE: INFO: ISJEE_JTA_METHODLOG0003: THROW: javax.transaction.TransactionManager begin: java.lang.Exception: Nested transaction not supported.: ThreadID=15,ThreadName=httpWorkerThread-28090-5


注意

  • メソッドを呼び出したインスタンスがすでに削除されており、出力項目の情報を取得できない場合などは、取得できなかった出力項目に"-"(ハイフン)を表示します。

  • EJBタイマーサービスを有効にした場合、以下のようにEJBタイマーサービスが呼び出すメソッドが「クライアントが呼び出したEJBアプリケーションのメソッドの情報」または「EJBコンテナが呼び出したメソッドの情報」としてログに出力されます。

    [30/03/2011 13:19:03.140 +0900] ISJEE: INFO: ISJEE_EJB_METHODLOG0001: CLIENT ENTRY: __ejb_container_timer_app#ejb.jar TimerBean com.sun.ejb.containers.TimerLocalHome.create: ThreadID=15,ThreadName=p: thread-pool-1; w: 6

    [30/03/2011 13:19:03.140 +0900] ISJEE: INFO: ISJEE_EJB_METHODLOG0001: ENTRY: __ejb_container_timer_app#ejb.jar TimerBean com.sun.ejb.containers.TimerBean.ejbCreate: ThreadID=15,ThreadName=p: thread-pool-1; w: 6