Webアプリケーションの開発・運用時に発生する以下のトラブルについて対処方法を説明します。
JSPのコンパイルに失敗した場合
以下の可能性が考えられます。
JSPに誤りがある
使用できるのはJSP 2.3に準拠したJSPです。
JSPの文法に誤りがないか確認してください。
JSP 2.3の文法についてはJSP 2.3の仕様を参照してください。
JSPの文字コードを正しく指定していない
JSPファイルの文字コードを正しく指定していないためにJSPをコンパイルする際に文字化けが発生している可能性があります。
JSPの文字コードを正しく指定してください。
文字コードの指定方法についてはJSP 2.3の仕様を参照してください。
JSPから使用しているクラスが存在しない
JSPから使用するクラスは、Webクラスローダから参照できる必要があります。
詳細は、「4.6 クラスローダ」を参照してください。
無名パッケージのクラスを使用している
JSPからは無名パッケージのクラスを使用することはできません。
JSPから使用するクラスにはパッケージ名を指定してください。
JSPファイルのサイズが上限値を超えている
JSPファイルのサイズが大きすぎます。
ファイルサイズの設定変更はできません。
以下の対処をしてください。
タグ(アクションやスクリプティング要素)の間の不要な記載(スペース、コメント、改行など)がある場合は削除してください。
JSPファイルを分割し、動的にincludeしてください。
JSPまたはJSPから静的includeされているファイルを更新しても実行時に反映されない
以下の可能性が考えられます。
JSPコンパイル中にJSPまたはJSPから静的includeされているファイルの更新をした。
JSPまたはJSPから静的includeされているファイルの置き換えをしたが、ファイルのタイムスタンプが前回JSPのコンパイルをした時刻よりも過去であった。
以下の対処をしてください。
JSPまたはJSPから静的includeされているファイルのタイムスタンプをマシンの現在時刻に更新してください。
日本語などのマルチバイト文字を含むURIにアクセスすると、Webブラウザーにステータスコード「404 Not Found」や「400 Bad Request」が通知される
ネットワーク設定の定義項目の「リクエストURIの解析に使用するエンコーディング(uri-encoding)」と、Webブラウザーから送信されたリクエストURIのエンコードが一致しているか確認してください。また、Webブラウザーがどのエンコード方式でリクエストURIをエンコードするかを確認してください。
DASに配備したWebアプリケーションとの通信に失敗する場合
以下の可能性があります。
配備したWebアプリケーションに対して大量のリクエストを送信している。
以下の対処をしてください。
DASに配備したWebアプリケーションの実行は、開発環境でのみ実施してください。大量のリクエストを送信する場合、運用環境に構築したGlassFish Serverクラスター上で実施してください。
Webブラウザーにステータスコード「400 Bad Request」が通知される
サイズの上限に関する以下の定義項目の設定値を超過したリクエストが来たため、リクエスト処理が実行されなかった可能性があります。「10.9.3 ネットワーク設定の定義項目」を参照して、これらの定義項目の設定値を超えるリクエストが送られることが無いか確認してください。
受信バッファーサイズ
リクエストBODYの最大サイズ
リクエストヘッダ数の上限値
Webブラウザーにステータスコード「403 Forbidden」が通知される
Webコンテナが受信したリクエストの送信元が、Webコンテナに許可されていない可能性があります。
HTTPサービスの定義項目「要求を受け付けるIPアドレス」を参照し、要求を受け付けるIPアドレスの設定を確認してください。
なお、リクエストの送信元IPアドレスは、HTTPアクセスログの出力フォーマット「%webserver.name%」に出力されます。
Webブラウザーにステータスコード「500 Internal Server Error」が通知される
Webアプリケーションの処理に失敗している可能性があります。サーバーログにエラーが出力されていないか確認してください。
Servletのファイルアップロードで、送信するファイルが2GByteを超えると、アップロードに失敗する
送信するファイルのサイズが2GByteを超えると、ブラウザーがContent-Lengthヘッダーに実際のファイルのバイト数とは異なる値を設定する場合があります。この場合、WebコンテナはIOExceptionをスローします。なお、巨大なファイルを送信するとネットワークが過負荷になるため、適切にサイズ制限をすることをお勧めします。
Servletのファイルアップロードで、jakarta.servlet.http.HttpServletRequest#getPart(String)やgetParts()を実行すると、例外が発生する
ServletExceptionがスローされる場合
HTTPヘッダーのContent-Typeに不正なMIMEタイプが指定されている可能性があります。ファイルアップロード機能を利用する場合は、multipart/form-dataを指定する必要があります。Content-Typeヘッダーの指定が正しいか、確認してください。
IllegalStateExceptionがスローされる場合
アノテーションのmaxRequestSizeやweb.xmlのmax-request-sizeで指定した値を超えてファイルがアップロードされた可能性があり、正しくサイズ制限ができています。アプリケーションにIllegalStateExceptionを捕捉(catch)する処理を追加してください。
IOExceptionがスローされる場合
ネットワーク設定の定義項目の受信タイムアウトを超過した場合に、IOExceptionがスローされます。WebブラウザーやWebサーバコネクタなどから、アップロードデータを受信できなかったことを意味しています。そのため、受信タイムアウトを長くして問題が解決するか、確認してください。