Interstage Application Server トラブルシューティング集
目次 索引 前ページ次ページ

第8章 EJBサービス使用時の異常

8.4 EJBアプリケーションの異常

 EJBアプリケーションが異常終了した場合には、原因を取り除いた後、EJBアプリケーションを再起動してください。

EJBアプリケーションが待機状態またはループ状態になった場合

 EJBアプリケーションが待機状態またはループ状態になった場合は、以下の対処を行ってください。

また、クライアントアプリケーションには、タイムアウトなどのエラーが通知されますので、エラーが通知されたクライアントアプリケーションを終了させてください。

EJBアプリケーション内で、“javax.swing”、“java.awt”を使用している場合

 EJBアプリケーションを動作させた時、以下の例外がコンテナログに出力された場合は、EJBアプリケーション内で、“javax.swing”または“java.awt”を使用している可能性があります。EJBアプリケーション内で、“javax.swing”または“java.awt”を使用しないように修正してください。

java.lang.InternalError: Can't connect to X11 window server using ':0.0' as the value of the DISPLAY variable.

EJBアプリケーションからのlookup処理で例外が発生した場合

 EJBアプリケーションからのlookup処理で例外が発生した場合は、以下について確認してください。





ローカルインターフェースを使用したEJBアプリケーションのlookup処理でjava.lang.ClassCastExceptionが発生した場合


org.omg.CORBA.INTERNALが発生する場合

 サーバの標準エラー情報にorg.omg.CORBA.INTERNALが出力される場合は、当該EJBアプリケーションのHomeインタフェースまたはRemoteインタフェースで使用しているクラスに定義されている内容(フィールド定義など)がサーバとクライアントで異なっている可能性があります。クラスに定義されている内容が同一であるかを確認してください。

 例えば、以下の場合が考えられます。

org.omg.CORBA.NO_IMPLEMENTが発生する場合

 以下の原因が考えられますので、環境を見直してください。

IllegalStateExceptionが発生する場合

 IllegalStateException("UserTransaction does not exist")

 以下の原因が考えられますので、アプリケーションを修正してください。

NullPointerExceptionが発生する場合

 NullPointerExceptionが発生した場合は、EJBアプリケーションに以下のプログラムミスがある可能性があります。

 原因を特定し、プログラムミスを修正してください。

 以下に、プログラムミス発生場所の特定方法の例を示します。

 FJEJBconsole、または標準エラー出力に例外のスタックトレースが出力されている場合

スタックトレースに以下のようなスタックトレースが出力されているとします。

 java.lang.NullPointerException
     at SampleBean.business(SampleBean.java:64) 


 この場合、SampleBean.javaの64行目を確認します。

 try
 {
    addRemote = addHome.create(); ←64行目
 } catch(Exception e) {
 ...
 }

 値がnullのHomeインタフェース(addHome)に対してcreateメソッドを実行していることが分かります。

 この場合、NullPointerExceptionが発生する原因としては、Homeインタフェースの取得(lookup処理)を実施していない、またはHomeインタフェースの取得でエラーが発生しているが処理を継続しているなどのプログラムミスが考えられます。

javax.transaction.HeuristicMixedExceptionが発生する場合

 javax.transaction.HeuristicMixedExceptionが発生する場合は、以下を実施して対処してください。

  1. 分散トランザクション機能を使用しない場合

    原因:トランザクションのコミット時に、データベースのコネクションに対してコミットを発行した場合に、データベースで例外が発生した。

    対処方法:データベースで発生したエラーの内容が\INTERSTAGE\var\FJEJBConsoleファイルに出力されています。発生したエラーの原因を取り除いてください。1トランザクション内で複数のデータベースにアクセスしているような場合には、データベースの整合性がとれていない可能性があります。データベースの内容を確認して、あらかじめ保管しておいたバックアップデータを復元するなど、トランザクションコミット前の状態にデータベースの状態を復元してください。

  2. 分散トランザクション機能を使用する場合

    例外の原因:トランザクションコミット時に、以下のいずれかのエラーが発生した。
          − リソース管理プログラムで異常が発生した
          − データベースで異常が発生した
          − インダウト状態が発生した

    対処方法:“データベース連携サービス使用時の異常”を参照してください。

java.lang.ClassCastException: [writeRemoteObject()] Specified object type is invalid.が発生する場合

 java.lang.ClassCastException: [writeRemoteObject()] Specified object type is invalid.が発生する場合は、以下を実施して対処してください。


Message-driven Bean運用時の異常

 Message-driven Beanの運用中にInterstage JMSまたはイベントサービスで異常が発生した場合には、“Interstage JMSの異常時の対処”、または“イベントサービス運用時の異常”を参照して対処してください。

 また、Message-driven Beanをワークユニットで運用中にワークユニットの強制停止をした場合、再度Message-driven Beanを起動してもメッセージが受信できないなどの異常が発生する場合があります。この場合、イベントチャネルに接続情報が残った可能性がありますので、同様に“Interstage JMSの異常時の対処”、または“イベントサービス運用時の異常”を参照して対処し、Message-driven Beanを再起動してください。

connector使用時の異常

 resource adapterで例外が発生した可能性があります。以下のファイルを参照して、原因を取り除いてください。

J2EE共通ディレクトリ\deployed\jca\logs\FJJCAlog.err

J2EE共通ディレクトリ/deployed/jca/logs/FJJCAlog.err

 ログファイルはファイルの大きさが100Kバイトに達するたびに新しく作成され、古いログファイルは以下の名前にリネームされます。

――――――――――
  FJJCAlog.err.数値
――――――――――

 ログファイルは3世代まで管理され、新しい順に“FJJCAlog.err”、“FJJCAlog.err.1”、“FJJCAlog.err.2”となります。3世代を超えるものは破棄されますので、必要な場合はコピーするなどして退避してください。

注意事項

 EJBアプリケーションが待ち状態またはループ状態になった場合、ejbdstopebコマンドでEJBアプリケーションを停止することはできません。
 この状態で当該EJBアプリケーションに対してejbdstopebコマンドを実行すると、停止処理は行われず、コマンドの実行結果はコンソールに出力されません。このように、起動しているEJBアプリケーションに対してejbdstopebコマンドを実行し、実行結果がシステムログに出力されない場合は、EJBアプリケーションのプロセスを停止してください。


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

All Rights Reserved, Copyright(C) 富士通株式会社 2006