Interstage Application Server/Interstage Web Server J2EE ユーザーズガイド
目次 索引 前ページ次ページ

第1部 J2EE共通編> 第2章 J2EEアプリケーションの設計> 2.3 クラスローダ

2.3.6 トレース機能によるトラブル調査

 J2EEアプリケーションを作成する際は、クラスがどのクラスローダでロードされるかを考慮する必要があります。
 ロードするクラスローダを誤った場合、J2EEアプリケーションが正常に動作しない場合があります。このようなトラブル発生時の調査に役立てるために、トレース機能を提供しています。
 トレース機能は、クラスがロードされた時にどのクラスローダ上でロードされたかを“コンテナログ”に出力します。“コンテナログ”では以下が確認できます。

■出力形式

 トレース情報の形式を以下に示します。

■出力項目

項目

内容

タイムスタンプ

クラスをロードした日時

クラス名

ロードしたクラスのクラス名(パッケージ名を含む)

リポジトリ

ロードしたクラスの保管先ディレクトリ名またはjarファイル名

クラスローダの種別

クラスをロードしたクラスローダの名称

クラスローダ

表示名

システムクラスローダ

System

Interstageクラスローダ

Interstage

Catalinaクラスローダ
注) Interstageのシステムで使用します

Catalina

Applicationクラスローダ

Application

Webappクラスローダ

Webapp

■ログの出力イメージ

------------------------------------------------------------------------------
[24/02/2004 16:17:22:093 +0900] [Loaded com.xxx.ClassA by Interstage]
[24/02/2004 16:17:22:101 +0900] [Loaded com.xxx.ClassB from c:\Interstage\J2EE\lib\xxx.jar by Webapp]
------------------------------------------------------------------------------

■設定方法

 トレースを出力するには、ワークユニットのJavaVMオプションに以下のオプションを設定します。

 トレース機能は、開発時のデバッグのための機能です。運用環境では使用しないことを推奨します。

■使用例

 ここではクラスローダのトレース機能の使用例について説明します。

[契機]

 以下の問題が発生した場合にクラスローダのトレース情報を採取してください。クラスローダのトレース情報は問題解決のための手助けとなります。

[解析手順]

 以下の手順で解析を行います。

  1. ワークユニットのJavaVMオプションに以下のオプションを設定。
    -Dcom.fujitsu.interstage.j2ee.ijserver.loader.trace=true
  2. 再現テストを実施。
  3. コンテナログに出力されたトレース情報をClassAで検索し、以下の2行を検出。
    [Loaded ClassA C:\Interstage\J2EE\var\deployment\ijserver\kaz001\apps\j2eesample.ear\CartBean.jar by Application]
    [Loaded ClassA C:\Interstage\J2EE\var\deployment\ijserver\kaz001\apps\j2eesample.ear\j2eesample.war\WEB-INF\classes by Webapp]
    上記からClassAがEJBアプリケーションとWebアプリケーションの2箇所に保管されていることが判明。

[検討]

 クラスのバッティングが原因でServletからEJBアプリケーションの呼び出しに失敗しているため、以下の対応を検討してください。

  1. EJBアプリケーションとWebアプリケーションの両方に同じクラスが存在しないようにアプリケーションの構成を変更することができないか。
  2. クラスローダの検索順番を“親が先”に設定することで回避可能か。
  3. クラスローダの分離を“分離しない”に設定することで回避可能か。

目次 索引 前ページ次ページ

Copyright 2008 FUJITSU LIMITED