ページの先頭行へ戻る
Interstage Application Server V13.0.0 GlassFish 設計・構築・運用ガイド
FUJITSU Software

11.75.32 java.lang.IllegalStateExceptionで始まる例外情報

java.lang.IllegalStateException

[意味]

不正または不適切なときにメソッドが呼び出されたことを示します。すなわち、Java環境またはJavaアプリケーションは、要求されたオペレーションに適した状態ではありません。

[原因]

以下の原因が考えられます。

  • 例外メッセージが「Operation not allowed」の場合

    • 実行された操作は許可されていません。

  • 例外メッセージが「EJB not in READY state」の場合

    • 呼出し可能な状態ではありません。

  • 例外メッセージが「EJBObject not available」の場合

    • EJBObjectは取得できません。

  • 例外メッセージが「EJBLocalObject not available」の場合

    • EJBLocalObjectは取得できません。

  • 例外メッセージが「ERROR: only SessionBeans with bean-managed transactionscan obtain UserTransaction」の場合

    • トランザクション管理種別が「Container」のSession BeanではUserTransactionを取得できません。

    • アプリケーションで作成したスレッドでトランザクション取得を行っています。

  • 例外メッセージが「No transaction context.」の場合

    • トランザクションが開始されていないため、トランザクションコンテキストがありません。

    • アプリケーションで作成したスレッドでトランザクション操作メソッドが実行されました。

  • 例外メッセージが「EJB Timer Service not available」の場合

    • EJBタイマーサービスの初期化に失敗している可能性があります。

  • 例外メッセージが「cannot add non-XA Resource to global JTS transaction.」の場合

  • 例外メッセージが「Post too large」の場合

    • リクエストのContent-Lengthヘッダーのサイズが、「POSTリクエストの最大サイズ」で指定した値を超えた可能性があります。

HttpServletResponseのAPI実行時にメッセージが空のIllegalStateExceptionがスローされる場合、レスポンスの一部または全部の返却を伴う処理後に以下の操作が実行された可能性があります。

  • resetBufferメソッドの呼び出し

  • sendErrorメソッドの呼び出し

  • sendRedirectメソッドの呼び出し

  • setBufferSizeメソッドが呼び出し

[ユーザーの対処]

以下の対処を行ってください。

  • 例外メッセージが「Operation not allowed」の場合

    • EJB規約を参照し、実行したメソッドを呼出し可能なメソッドで実行するようにアプリケーションを修正してください。

  • 例外メッセージが「EJB not in READY state」の場合

    • EJB規約を参照し、実行したメソッドを呼出し可能なメソッドで実行するようにアプリケーションを修正してください。

  • 例外メッセージが「EJBObject not available」の場合

    • EJB規約を参照し、getEJBObjectメソッドを呼出し可能なメソッドで実行するようにアプリケーションを修正してください。

  • 例外メッセージが「EJBLocalObject not available」の場合

    • EJB規約を参照し、getEJBLocalObjectメソッドを呼出し可能なメソッドで実行するようにアプリケーションを修正してください。

  • 例外メッセージが「ERROR: only SessionBeans with bean-managed transactionscan obtain UserTransaction」の場合

    • UserTransactionの操作を行わないようアプリケーションを修正してください。トランザクションのロールバックを行いたい場合は、EJBContext.setRollbackOnlyメソッドを使用してください。

    • アプリケーションで作成したスレッドでトランザクション管理することはJakarta EE規約で禁止されているため、コンテナから呼び出されたスレッドでトランザクション管理を実行してください。

  • 例外メッセージが「No transaction context.」の場合

    • トランザクションを開始した状態でメソッドを実行するようにアプリケーションを修正してください。

    • アプリケーションで作成したスレッドでトランザクション管理することはJakarta EE規約で禁止されているため、コンテナから呼び出されたスレッドでトランザクション管理を実行してください。

  • 例外メッセージが「EJB Timer Service not available」の場合

    • GlassFish Serverクラスター起動時にEJB5108のメッセージが出力されていないか確認してください。EJB5108のメッセージが出力されている場合、EJB5108の対処を実施してください。

  • 例外メッセージが「cannot add non-XA Resource to global JTS transaction.」の場合

  • 例外メッセージが「Post too large」の場合

    • リクエストのContent-Lengthヘッダーが想定内のサイズの場合、「8.8.3 ネットワーク設定の定義項目」で説明されている「POSTリクエストの最大サイズ」を見直してください。

レスポンスの一部または全部の返却を伴う処理後に上記のAPIを実行することはできません。アプリケーションを確認して修正してください。


java.lang.IllegalStateException: Already set read listener

[意味]

ReadListenerがすでに設定されています。

[システムの処理]

処理を中断します。

[ユーザーの対処]

setReadListenerを2回以上呼び出していないか確認してください。


java.lang.IllegalStateException: Cannot create a session after the response has been committed

[意味]

レスポンスをコミットした後でセッションを作成できません。

[原因]

レスポンスの一部、または全部の返却を伴う処理後にセッションを生成しようとしました。

[ユーザーの対処]

レスポンスの一部、または全部の返却を伴う処理後に、HttpServletRequestのgetSessionメソッドを呼び出してセッションを生成しようとしていないか、アプリケーションを確認して修正してください。


java.lang.IllegalStateException: Cannot forward after response has been committed

[意味]

レスポンスをコミットした後でフォワードできません。

[原因]

アプリケーションに誤りがある可能性があります。

[ユーザーの対処]

レスポンスをコミットする前に、またはコミットされる前にフォワードしてください。レスポンスバッファーサイズを超えてレスポンスを出力した場合、自動でコミットされることがあります。


java.lang.IllegalStateException: Cannot set ReaderListener for non-async or non-upgrade request

[意味]

ReadListenerを設定することができません。

[システムの処理]

処理を中断します。

[ユーザーの対処]

ReadListenerは非同期リクエスト処理またはアップグレード処理においてだけ設定できます。アプリケーションを確認して修正してください。


java.lang.IllegalStateException: Cannot set WriteListener for non-async or non-upgrade request

[意味]

WriteListenerを設定することができません。

[システムの処理]

処理を中断します。

[ユーザーの対処]

WriteListenerは非同期リクエスト処理またはアップグレード処理においてだけ設定できます。アプリケーションを確認して修正してください。


java.lang.IllegalStateException: changeSessionId has been called without a session

[意味]

セッションがない状態でchangeSessionIdが実行されました。

[システムの処理]

処理を中断します。

[ユーザーの対処]

アプリケーションを見直してください。


java.lang.IllegalStateException: Filter with name {0} does not have any class configured

[可変情報]

{0}: フィルター名

[意味]

フィルター{0}にfilter-classの定義が存在しません。

[システムの処理]

処理を中断します。

[ユーザーの対処]

web.xmlの内容に誤りがあります。フィルター{0}の定義を見直してください。


java.lang.IllegalStateException: getInputStream() has already been called for this request

[意味]

getInputStream()はこのリクエストに対してすでに呼び出されています。

[原因]

同一のリクエストに対して、getReaderメソッドとgetInputStreamメソッドが呼び出されました。

[ユーザーの対処]

同一のリクエストに対しては、getInputStreamメソッドとgetReaderメソッドはどちらかだけ使用できます。アプリケーションを確認して修正してください。

java.lang.IllegalStateException: getOutputStream() has already been called for this response

[意味]

getOutputStream()はこのレスポンスに対してすでに呼び出されています。

[原因]

同一のレスポンスに対して、getOutputStreamメソッドとgetWriterメソッドが呼び出されました。

[ユーザーの対処]

同一のレスポンスに対しては、getWriterメソッドとgetOutputStreamメソッドはどちらかだけ使用できます。アプリケーションを確認して修正してください。


java.lang.IllegalStateException: getReader() has already been called for this request

[意味]

getReader()はこのリクエストに対してすでに呼び出されています。

[原因]

同一のリクエストに対して、getInputStreamメソッドとgetReaderメソッドが呼び出されました。

[ユーザーの対処]

同一のリクエストに対しては、getReaderメソッドとgetInputStreamメソッドはどちらかだけ使用できます。アプリケーションを確認して修正してください。


java.lang.IllegalStateException: getWriter() has already been called for this response

[意味]

getWriter()はこのレスポンスに対してすでに呼び出されています。

[意味]

同一のレスポンスに対して、getWriterメソッドとgetOutputStreamメソッドが呼び出されました。

[ユーザーの対処]

同一のレスポンスに対しては、getWriterメソッドとgetOutputStreamメソッドはどちらかだけ使用できます。アプリケーションを確認して修正してください。


java.lang.IllegalStateException: Request.getParts is called without multipart configuration. Either add a @MultipartConfig to the servlet, or a multipart-config element to web.xml

[可変情報]

{0}:メソッド名

[意味]

メソッド{0}が、マルチパートの設定がされていないサーブレットに対して呼び出されました。

[システムの処理]

処理を中断します。

[ユーザーの対処]

ファイルアップロード機能を使用する場合、サーブレットに@MultipartConfigアノテーションを追加するか、web.xmlで定義するようにしてください。


java.lang.IllegalStateException: {0}: Session already invalidated

[可変情報]

{0}: メソッド名

[意味]

セッションはすでに無効化されています。

[原因]

無効化されたセッションに対してメソッド{0}を呼び出したため、IllegalStateException例外が発生しました。

[ユーザーの対処]

無効化されたセッションインスタンス(HttpSessionインスタンス)に対してメソッド{0}を呼び出すことはできません。Webアプリケーションにおいて、すでに無効化されているセッションインスタンスに対してメソッド{0}の呼出しが行われていないことを確認してください。


java.lang.IllegalStateException: Servlet with name {0} does not have any servlet-class or jsp-file configured

[可変情報]

{0}: サーブレット名

[意味]

サーブレット{0}にservlet-classまたはjsp-fileの定義が存在しません。

[システムの処理]

処理を中断します。

[ユーザーの対処]

web.xmlの内容に誤りがあります。サーブレット{0}の定義を見直してください。


java.lang.IllegalStateException: The WriteListener has already been set.

[意味]

WriteListenerがすでに設定されています。

[システムの処理]

処理を中断します。

[ユーザーの対処]

setWriteListenerを2回以上呼び出していないか確認してください。


java.lang.IllegalStateException: WebappClassLoader unable to load resource [{0}], because it has not yet been started, or was already stopped

[可変情報]

{0}: リソース名

[意味]

Webクラスローダがすでに停止しているため、リソースの取得に失敗しました。

[システムの処理]

処理を中断します。

[ユーザーの対処]

  • 通常業務中のHotDeploy機能の利用は推奨しません。HotDeploy機能はリクエストがない状況で利用してください。「1.4.2 配備時の注意事項」の「HotDeploy機能使用時の注意事項」を参照してください。

  • アプリケーションでスレッドを生成した場合、アプリケーションの終了処理完了時には、スレッドが終了しているようにしてください。終了処理後でもスレッドが動作している場合、本メッセージが出力されることがあります。アプリケーションの終了処理の例を以下に示します。

    • initメソッドでスレッド生成した場合
      サーブレットのdestroyメソッドで、アプリケーションで作成したスレッドを終了することを推奨します。

    • contextInitializedメソッドでスレッド生成した場合
      ServletContextListenerのcontextDestroyedメソッドで、アプリケーションで作成したスレッドを終了することを推奨します。

  • 独自のログハンドラまたはログフォーマッタでJavaロギングを実施している場合、これらのクラスがシステム拡張ディレクトリーに保管されていないことが考えられます。詳細は「4.17.7 アプリケーションからのログ出力」を参照してください。