Interstage Application Server メッセージ集
目次 前ページ次ページ

第4部 ログファイルに出力されるメッセージ> 第45章 V5.1以前のServletサービスのメッセージ> 45.1 サーブレット・コンテナのメッセージ

45.1.2 サーブレット・コンテナで発生したExceptionまたはErrorについて

 Servletサービスでよく発生するJavaのExceptionやError、アプリケーションが異常終了する要因について説明します。
 サーブレットまたはJSPが異常終了した場合、サーブレット・コンテナの標準出力・標準エラー出力のログ、サーブレットのログ、サーブレット・コンテナのログまたはブラウザにJavaのスタックトレースが出力されます。
 考えられる原因と対処を以下に示します。
 なお、ここで述べる原因とは、当該Exceptionが発生する引き金となる根本原因を指します。
 また、複数のExceptionが同時に発生している場合は、「Root cause:」のExceptionの対処を行ってください。

 ここでのメッセージは、メッセージの内容を直接参照してください。

BindException

[原因]
 サーブレット・コンテナ環境定義ファイルに設定したサーブレット・コンテナのクラス定義のIPアドレス、ポート番号への接続に失敗しています。
 ポートが使用中であるか、IPアドレスの割り当てに失敗している可能性があります。

[ユーザの対処]
 サーブレット・コンテナ環境定義ファイルに設定したサーブレット・コンテナのクラス定義のIPアドレス、ポート番号の設定を見直してください。
 定義したポートが使用中でないことを確認してください。
 現在使用中のポートについては、netstatコマンドで確認できます。netstatコマンドについてはOSのマニュアルおよびヘルプを参照ください。
 コンテナの標準出力、標準エラー出力のログに以下のメッセージが出力された場合には、“起動ログおよびコンテナの標準出力、標準エラー出力のログメッセージ”を参照してください。
   FATAL: java.net.BindException: Address in use: bind
   java.net.BindException: Address in use: bind
   または
   FATAL: java.net.BindException: Cannot assign requested address: JVM_Bind
   java.net.BindException: Cannot assign requested address: JVM_Bind

ClassCastException

[原因]
 サーブレットまたはJSPのリロードにより、Webブラウザとのセション情報の不整合が発生しました。

[ユーザの対処]
 Webブラウザのセション情報をクリア(サーブレット・コンテナ環境定義ファイルのContextManagerまたはContextタグのclientSession属性を省略または“default”を指定している場合はWebブラウザを終了する)し、セション管理を最初からやり直してください。または、アプリケーションでClassCastExceptionをcatchし、セションの無効化処理をアプリケーションに追加してください。この場合、Webブラウザのセション情報のクリアは必要ありません。

CORBA.COMM_FAILURE

[原因]
 CORBAサービスとの連携で異常が発生しました。

[ユーザの対処]
 “CORBAサービスから通知される例外情報/マイナーコード”を参照してください。

IncompatibleClassChangeError

[原因]
 アプリケーション・コンパイル時のJDKの環境と、アプリケーション実行時のJDKの環境が異なります。

[ユーザの対処]
 アプリケーションをコンパイルしたJDKのバージョンとサーブレット・コンテナが動作するJDKのバージョンを同じにしてください。
 JDKのバージョン指定は、“移行ガイド”の“V5.1以前のServletサービスの環境定義ファイル”で、“JServlet環境定義ファイル”の“default.binまたは[containername].bin”を参照してください。
 または、サーブレット・コンテナのJDKの環境に合わせてアプリケーションを再コンパイルしてください。

java.io.IOException

[原因]
 コンテナの標準出力、標準エラー出力のログに以下のメッセージが出力された場合には、“起動ログおよびコンテナの標準出力、標準エラー出力のログメッセージ”を参照してください。
   HANDLER THREAD PROBLEM: java.io.IOException: Stream broken
   java.io.IOException: Stream broken

 その他の場合、サーブレット・コンテナがレスポンスを送信中にサーブレット・ゲートウェイ−サーブレット・コンテナ間のソケットが切断されたことにより発生することがあります。
 ゲートウェイがコンテナの応答処理の完了を待たずにソケットを切断するタイミングは以下のとおりです。

  1. Webブラウザなどのクライアントアプリケーションが処理を中断(ソケットを切断)したことを検出しました。
  2. サーブレット・ゲートウェイのタイムアウトが発生しました。

[ユーザの対処]

  1. この場合、クライアントアプリケーションからの中断であり、サーバ上の異常を示すものではありません。この場合IOExceptionが出力される要因は以下のものがあります。

    なお、これらのIOExceptionは、ゲートウェイによるクライアントアプリケーションのソケット切断の検出タイミング(ネットワークの状態によって異なる)とコンテナによるソケットへの書き出しタイミングに依存するため、必ず発生するものではありません。

  2. アプリケーションの処理に時間がかかっている場合には、タイムアウト時間を長く設定してください。アプリケーションに問題があり、復帰しない、もしくは遅延している場合にはアプリケーションを見直してください。

javax.naming.InvalidNameException

[原因]
 Webアプリケーション環境定義ファイルのアプリケーション環境エントリの<env-ref-name>タグ、または値が省略されています。

[ユーザの対処]
 Webアプリケーション環境定義ファイルを修正してください。
 詳細は、“移行ガイド”の“V5.1以前のServletサービスの環境定義ファイル”で、“Webアプリケーション環境定義ファイル(deployment descriptor)”の“アプリケーション環境エントリ”を参照してください。

javax.naming.NameAlreadyBoundException

[原因]

  1. Webアプリケーション環境定義ファイルの<resource-ref>タグを複数定義した際に<res-ref-name>タグの値が重複しています。
  2. Webアプリケーション環境定義ファイルの<env-entry>タグを複数定義した際に<env-ref-name>タグの値が重複しています。

[ユーザの対処]

  1. Webアプリケーション環境定義ファイルを修正してください。詳細は、“移行ガイド”の“V5.1以前のServletサービスの環境定義ファイル”で、“Webアプリケーション定義ファイル(deployment descriptor)”の“外部リソースの参照”を参照してください。
  2. Webアプリケーション環境定義ファイルを修正してください。詳細は、“移行ガイド”の“V5.1以前のServletサービスの環境定義ファイル”で、“Webアプリケーション定義ファイル(deployment descriptor)”の“アプリケーション環境エントリ”を参照してください。

javax.naming.NamingException

[原因]
 Webアプリケーション環境定義ファイルのアプリケーション環境エントリにおいて、以下のタグ、または値が省略されています。

[ユーザの対処]
 Webアプリケーション環境定義ファイルを修正してください。詳細は、“移行ガイド”の“V5.1以前のServletサービスの環境定義ファイル”で、“Webアプリケーション定義ファイル(deployment descriptor)”の“アプリケーション環境エントリ”を参照してください。

jasper.compiler.ParseException

[原因]
 JSPの文法誤りです。

[ユーザの対処]
 JSPのアプリケーションを修正してください。

jasper.JasperException

[原因]

  1. JSPのアプリケーションに記述されたスクリプト(Java)の文法誤りです。
  2. JSPから呼び出したクラスのメソッドでExceptionが発生しました。

[ユーザの対処]

  1. アプリケーションを修正してください。
  2. 呼出し先メソッドを修正してください。

NoClassDefFoundError

[原因]

  1. 実行しようとしたクラスファイルが見つかりません。
  2. アプリケーション・コンパイル時のJDKの環境と、アプリケーション実行時のJDKの環境が異なります。
  3. クラスまたはメソッド名の指定で大文字・小文字が異なります。
    コンテナの標準出力、標準エラー出力のログに以下のメッセージが出力された場合には、“起動ログおよびコンテナの標準出力、標準エラー出力のログメッセージ”を参照してください。

    java.lang.NoClassDefFoundError: com/fujitsu/interstage/jservlet/tomcat/startup/TomcatException in thread "main"
    または
    java.lang.NoClassDefFoundError: org/xml/sax/DocumentHandler
    または
    java.lang.NoClassDefFoundError: javax/servlet/ServletRequest

  4. セキュリティ機能またはオブジェクト参照機能がJDK1.2で使用されています。

[ユーザの対処]

  1. CLASSPATHの設定を見直してください。
  2. アプリケーションをコンパイルしたJDKのバージョンとサーブレット・コンテナが動作するJDKのバージョンを同じにしてください。JDKのバージョン指定は、“移行ガイド”の“V5.1以前のServletサービスの環境定義ファイル”で、“JServlet環境定義ファイル”の“default.binまたは[containername].bin”を参照してください。
    または、サーブレット・コンテナのJDKの環境に合わせてアプリケーションを再コンパイルしてください。
  3. アプリケーションの呼出し部分を正しいクラス/メソッド名に修正してください。
  4. セキュリティ機能またはオブジェクト参照機能はJDK1.3以上を使用してください。

NoSuchElementException

[原因]
 アプリケーション・コンパイル時のJDKの環境と、アプリケーション実行時のJDKの環境が異なります。

[ユーザの対処]
 アプリケーションをコンパイルしたJDKのバージョンとサーブレット・コンテナが動作するJDKのバージョンを同じにしてください。JDKのバージョン指定は、“移行ガイド”の“V5.1以前のServletサービスの環境定義ファイル”で、“JServlet環境定義ファイル”の“default.binまたは[containername].bin”を参照してください。または、サーブレット・コンテナのJDKの環境に合わせてアプリケーションを再コンパイルしてください。

NullPointerException

[原因]

  1. アプリケーションに誤りがあります。
  2. 必要なクラスがJServlet環境定義に指定されていません。
    コンテナの標準出力、標準エラー出力のログに以下のメッセージが出力された場合には、“起動ログおよびコンテナの標準出力、標準エラー出力のログメッセージ”を参照してください。

    ERROR reading (<filename>) java.lang.NullPointerException:
    At Line <number> <web-app-id>

    ERROR reading <filename>
    At com.sun.xml.parser/P-<number>

    FATAL: configuration error
    java.lang.NullPointerException:

    HANDLER THREAD PROBLEM:
    java.lang.NullPointerException

[ユーザの対処]

  1. 本メッセージに続いて出力されているスタックトレースを解析し、アプリケーションの以下の問題を修正してください。
    オブジェクトが必要な場合に、アプリケーションがnullを使おうとするとスローされるもので、以下のようなケースがないか確認してください。
  2. JServlet環境定義ファイルに必要なクラスパスを追加してください。
    クラスパスの設定は、“移行ガイド”の“V5.1以前のServletサービスの環境定義ファイル”で、“JServlet環境定義ファイル”の“default.envまたは[containername].env”を参照してください。

OutOfMemoryError

[原因]

  1. Java VMのヒープ領域の不足です。
  2. Java VMのパーム(permanent)領域の不足です。
  3. システムのメモリ不足です。


 原因の切り分け調査には、サーブレット・コンテナのヒープ使用状況を確認できるjheapコマンドが使用できます。jheapコマンドを使用する際に必要なサーブレット・コンテナのプロセスIDは、jscontdispコマンドで確認できます。
 jheapコマンドの使用方法については、“トラブルシューティング集”の“Javaツール機能”−“jheap”を参照してください。

[ユーザの対処]

  1. Java VMの最大ヒープ領域のサイズを増やしてください。
    ヒープ領域の利用状況については、Java VMの起動パラメタに“-verbosegc”オプションを追加することによりガベージコレクション発生時のヒープ利用状況を測定できます。
    環境設定については、“移行ガイド”の“V5.1以前のServletサービスの環境定義ファイル”で、“JServlet環境定義ファイル”の“default.bin.parametersまたは[containername].bin.parameters”を参照してください。
    Java VMの起動オプションについては、Java VMのドキュメントを参照してください。
  2. ヒープ領域に空きがあるにもかかわらず、本メッセージが出力される場合には、パーム(permanent)領域が不足していることが考えられます。Java VMのパーム領域のサイズを増やしてください。
    パーム領域のサイズは、“JServlet環境定義ファイル”の“default.bin.parametersまたは[containername].bin.parameters”で、Java VMのオプションに指定します。
    Java VMのオプションについては、Java VMのドキュメントを参照してください。
  3. 現在起動しているServletサービス以外の不要なアプリケーションを終了してください。V5.1以前のマニュアルで、“インストールガイド”を参照して必要となるメモリが十分に用意されているか確認してください。メモリ量が不足しているときには、メモリを増設してください。

ServletException

[原因]
 サーブレット内部でExceptionが発生しました。

[ユーザの対処]
 このExceptionの後に出力されている「Root cause:」のExceptionの対処を行ってください。

SocketException

[原因]

  1. サーブレット・ゲートウェイとサーブレット・コンテナ間のソケットが切断されました。
  2. ServletまたはJSPと、サーバアプリケーション間のソケットが切断されました。
  3. サーバアプリケーションがダウンしました。
    コンテナの標準出力、標準エラー出力のログに以下のメッセージが出力された場合には、“起動ログおよびコンテナの標準出力、標準エラー出力のログメッセージ”を参照してください。

    HANDLER THREAD PROBLEM:
    java.net.SocketException: Connection reset by peer: JVM_recv in socket input stream read

    FATAL: java.net.SocketException: create (code=xxxxx)
    java.net.SocketException: create (code=xxxxx)

[ユーザの対処]

  1. アプリケーションの処理を見直してください。妥当である場合は、サーブレット・ゲートウェイのタイムアウト時間を長くしてください。
  2. アプリケーションの処理を見直してください。妥当である場合は、アプリケーションで使用しているソケットのタイムアウト時間を長くしてください。
  3. サーバアプリケーションの状態を確認してください。また、必要があればサーバアプリケーションを修正してください。

UnsatisfiedLinkError

[原因]

  1. JNI(Java Native Interface)で呼び出すDLLがPATHに設定されていません。
  2. nativeメソッド宣言のjavaソースとCヘッダの不整合です。
  3. JNI呼出しクラスと、JNIをロードするloadLibraryメソッドを呼び出しているクラスの配置が異なっています。
  4. リロードによりJNIが呼出し不可能になりました。

[ユーザの対処]

  1. JServlet環境定義ファイルにJNIで呼び出すDLLを環境変数PATHに指定してください。
    設定については、“移行ガイド”の“V5.1以前のServletサービスの環境定義ファイル”で、“JServlet環境定義ファイル”の“default.envまたは[containername].env”を参照してください。
  2. アプリケーションのコンパイル環境を見直してください。
  3. JNI呼出しクラスと、loadLibraryメソッドを呼び出しているクラスは同じ場所に配置してください。以下のどちらか1つの場所に配置してください。
  4. リロード機能を無効にしてください。または、JNI呼出しクラスと、loadLibraryメソッドを呼び出しているクラスはJServlet環境定義ファイルのクラスパスに配置してください。

目次 前ページ次ページ

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