Interstage Application Server トラブルシューティング集 |
目次
索引
![]() ![]() |
第8章 EJBサービス使用時の異常 |
EJBアプリケーションが異常終了した場合には、原因を取り除いた後、EJBアプリケーションを再起動してください。
EJBアプリケーションが待機状態またはループ状態になった場合は、以下の対処を行ってください。
また、クライアントアプリケーションには、タイムアウトなどのエラーが通知されますので、エラーが通知されたクライアントアプリケーションを終了させてください。
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処理で例外が発生した場合は、以下について確認してください。
サーバの標準エラー情報にorg.omg.CORBA.INTERNALが出力される場合は、当該EJBアプリケーションのHomeインタフェースまたはRemoteインタフェースで使用しているクラスに定義されている内容(フィールド定義など)がサーバとクライアントで異なっている可能性があります。クラスに定義されている内容が同一であるかを確認してください。
例えば、以下の場合が考えられます。
以下の原因が考えられますので、環境を見直してください。
IllegalStateException("UserTransaction does not exist")
以下の原因が考えられますので、アプリケーションを修正してください。
NullPointerExceptionが発生した場合は、EJBアプリケーションに以下のプログラムミスがある可能性があります。
原因を特定し、プログラムミスを修正してください。
以下に、プログラムミス発生場所の特定方法の例を示します。
FJEJBconsole、または標準エラー出力に例外のスタックトレースが出力されている場合
スタックトレースに以下のようなスタックトレースが出力されているとします。
java.lang.NullPointerException |
この場合、SampleBean.javaの64行目を確認します。
try |
値がnullのHomeインタフェース(addHome)に対してcreateメソッドを実行していることが分かります。
この場合、NullPointerExceptionが発生する原因としては、Homeインタフェースの取得(lookup処理)を実施していない、またはHomeインタフェースの取得でエラーが発生しているが処理を継続しているなどのプログラムミスが考えられます。
javax.transaction.HeuristicMixedExceptionが発生する場合は、以下を実施して対処してください。
原因:トランザクションのコミット時に、データベースのコネクションに対してコミットを発行した場合に、データベースで例外が発生した。
対処方法:データベースで発生したエラーの内容が\INTERSTAGE\var\FJEJBConsoleファイルに出力されています。発生したエラーの原因を取り除いてください。1トランザクション内で複数のデータベースにアクセスしているような場合には、データベースの整合性がとれていない可能性があります。データベースの内容を確認して、あらかじめ保管しておいたバックアップデータを復元するなど、トランザクションコミット前の状態にデータベースの状態を復元してください。
例外の原因:トランザクションコミット時に、以下のいずれかのエラーが発生した。
− リソース管理プログラムで異常が発生した
− データベースで異常が発生した
− インダウト状態が発生した
対処方法:“データベース連携サービス使用時の異常”を参照してください。
java.lang.ClassCastException: [writeRemoteObject()] Specified object type is invalid.が発生する場合は、以下を実施して対処してください。
高速に呼び出されるBeanのEJB Objectを取得し、クライアントアプリケーションに返却した場合に発生します。
カストマイズツールで高速呼出し定義より、該当する高速に呼び出されるBeanの定義を解除し、再度EJBアプリケーションを起動してから実行してください。
カストマイズツールの定義情報(2)タグの、「ローカル呼出し」を”する”に指定したBeanのEJB Objectを取得し、クライアントアプリケーションに返却した場合に発生します。カストマイズツールの定義情報(2)タグで、該当するBeanの「ローカル呼出し」を”しない”に指定し、再度EJBコンテナを起動してから実行してください。
高速に呼び出されるBeanのEJB Objectに対するHandleを取得し、クライアントアプリケーションに返却した場合に発生します。
カストマイズツールで、高速呼出し定義より該当する高速に呼び出されるBeanの定義を解除し、再度EJBアプリケーションを起動してから実行してください。
カストマイズツールの定義情報(2)タグのローカル呼び出しを「する」に指定したBeanのEJB Objectに対するHandleを取得し、クライアントアプリケーションに返却した場合に発生します。
カストマイズツールの定義情報(2)タグで、該当するBeanのローカル呼び出しを「しない」に指定し、再度EJBコンテナを起動してから実行してください。
Message-driven Beanの運用中にInterstage JMSまたはイベントサービスで異常が発生した場合には、“Interstage JMSの異常時の対処”、または“イベントサービス運用時の異常”を参照して対処してください。
また、Message-driven Beanをワークユニットで運用中にワークユニットの強制停止をした場合、再度Message-driven Beanを起動してもメッセージが受信できないなどの異常が発生する場合があります。この場合、イベントチャネルに接続情報が残った可能性がありますので、同様に“Interstage JMSの異常時の対処”、または“イベントサービス運用時の異常”を参照して対処し、Message-driven Beanを再起動してください。
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アプリケーションのプロセスを停止してください。
目次
索引
![]() ![]() |