IBM WebSphere Application ServerでJClass ServerChartを動作させるとイメージが正常に生成されません。("EncoderException: JPEG encoding error: Image is NULL."というメッセージが出力されます)

文書番号 : 13922     文書種別 : 使用方法     最終更新日 : 2004/03/10
文書を印刷する
対象製品
JClass ServerChart 4.0J
詳細


WebSphereのエディションによっては、JClass ServerChartを動作させた場合に問題が発生する可能性があります。


この現象が発生しているかどうかは、以下の点で判断できます。

  1. グラフ画像が生成されない
  2. WebSphereのSystemErr.logファイルに、以下のメッセージが出力される。

    com.klg.jclass.util.swing.encode.EncoderException: JPEG encoding error: Image is NULL.


この現象は、JClass ServerChart に含まれるクラスと同名のクラスが、WebSphere Application Server(以後 WAS)のライブラリにも含まれているために発生します。


WASに含まれるライブラリとして、通常以下のディレクトリに"chart.jar"というファイルがインストールされています。

 
(WebSphereルートディレクトリ)/AppServer/lib


 
こちらのファイルには、JClass ServerChart の旧バージョンのクラスの一部が含まれており、それがJClass ServerChart のモジュールより優先して参照されるため、バージョンの違いによる不整合が発生し現象が発生します。



この現象の回避のために、以下の2つの方法が考えられます。

方法1:クラスローダーモードの変更

クラスローダーのクラス検索順序を変更することにより、"chart.jar"より先に、JClass ServerChartのライブラリである、"jcschart.jar"ファイルが先に参照されるようになり、現象を回避します。


  1. WASのサーバーを起動し、管理コンソールにログインする。
  2. 左側ツリーより、[アプリケーション]→[エンタープライズアプリケーション]→(作成したアプリケーション名)を選択してください。
  3. 表示された項目中、画面下部の[関連項目]の[Webモジュール]を選択してください。
  4. お客さまがご作成中のWebモジュール名(warファイル)を選択し、表示された個別のWebモジュールに対する設定画面で、 [クラス・ローダー・モード]:"親が最後" に設定してください。
  5. 以下の手順で変更した内容を反映してください。
    [適用]→[保管]→[ログオフ]→[サーバー停止]→[サーバー起動]


ただし、クラスローダーの変更自体は通常推奨される動作ではありません。クラスローダーの順序変更により予期せぬ問題が発生する可能性があります。


この設定は特定のWebモジュールに対して行うもので、サーバー全体のクラスローダーを変更するものではないため、大きな問題が起こる可能性が低くなります。ただし、対象となるWebモジュールに何らかの問題が発生する可能性があり、最悪アプリケーションサーバーが正常に起動しなくなる可能性があります。

もし、問題が発生した場合、以下の方法2をお試しください。



方法2:"chart.jar"の退避
上記の通り、この現象はWASの"chart.jar"に含まれるクラスとの競合により発生します。そのため、"chart.jar"をクラスパス外に退避した状態でWASを動作させることで現象が回避されます。しかし、"chart.jar"ファイルも、WAS側で使用するファイルであるため、単純に移動することはできません。


弊社にてWAS起動時にロードされるクラスを確認した限りでは、WAS本体のアプリケーションサーバーとしての動作では、"chart.jar"は参照されていない模様でした。パフォーマンス監視ツールである、"Tivoli Performance Viewer"を起動した際に、"chart.jar"を使用しているようです。もし、WASが"Tivoli Performance Viewer"のみで、"chart.jar"を使用しているのであれば、"Tivoli Performance Viewer"をご使用いただけない状態となりますが、"chart.jar"の退避によってこの現象が回避可能となります。
ご使用になる環境を含めてご検討いただき、いずれかの方法で回避を行うことをご検討ください。

この文書は、以前は次のFAQ IDで公開されていました : 4848