JavaServer Pages トラブルシューティングのヒント
このヒントを使用して、JavaServer Pages の問題をトラブルシューティングします。
Web サーバーで表示される JavaServer Pages ソース・コード
WebSphere® Application Server の文書ルートを Web サーバーの文書ルートと共有している場合は、Web サーバーが JavaServer Pages (JSP) ソース・ファイルをプレーン・テキストとして表示してしまうことによる、機密漏れが発生する恐れがあります。
- 問題
- WebSphere Web サーバー・プラグインを使用すると、要求を WebSphere Application Server が処理するかどうかを決定するルールを設定できます。受信する要求 がルールに一致しない場合には、Web サーバー・プラグインは制御を Web サーバーに返し 、Web サーバーは要求を実行できます。 この場合、未知のホスト・ヘッダーについては、ルールによって WebSphere Application Server が処理すべきであるとは判定されないため、Web サーバー・プラグインは制御を Web サーバーに返します。その結果、Web サーバーは Web サーバー 文書ルート内で要求を探します。JSP ソース・ファイルは Web サーバーの文書ルート 内に保管されるため、Web サーバーはファイルを検索し、プレーン・テキストと して表示します。
- 推奨される解決法
- WebSphere Application Server JSP ソース・ファイルを Web サーバー文書ルート外に 移動します。 すると、この要求が未知のホスト・ヘッダーと共に来た場合には、プラグ インは制御を Web サーバーに返し、JSP ソース・ファイルは文書ルート内に は見つかりません。その結果、Web サーバーは JSP ソースではなく、404 File Not Found エラーを返します。
@include ディレクティブを使用している際の 2 バイト文字セット (DBCS) 文字の表示に関する問題
@include ディレクティブを使用する JavaServer Pages ファイルで 2 バイト文字セット (DBCS) 文字を表示すると、問題が発生する可能性があります。 WebSphere Application Server バージョン 6.0 以降へマイグレーションされた一部のアプリケーションでは、 後方互換性の問題から JSP 2.0 仕様に準拠するように変更する必要がある場合があります。JSP 2.0 仕様では、静的に組み込まれた各リソースがページ・エンコードまたはコンテンツ・タイプを設定することが必要です。 これは、1 つのファイルの中に include ディレクティブを使用する別のファイルが含まれている場合でも、各ファイルの文字エンコードは別々に決定されるためです。
JavaServer Pages (JSP) エンジンを使用する際の問題
- .html ファイルまたはサーブレットなどのその他のリソースが要求され、 正しく表示されているかどうかを判別する。これらのファイルが正しく表示されない場合は、 HTTP サーバーなどのより深いレベルで問題が発生している可能性があります。
- その他のリソースが正しく表示されている場合は、
以下のようにして、JSP プロセッサーが正常に始動したかどうかを判別します。
アクセスを試みている JSP ファイルをホスティングしているサーバーの JVM ログを参照します。 次のメッセージは、JSP プロセッサーが正常に起動したことを示します。
JSP プロセッサーがロードに失敗した場合、以下のようなメッセージが表示されます。Extension Processor [class com.ibm.ws.jsp.webcontainerext.JSPExtensionProcessor] was initialized successfully. Extension Processor [class com.ibm.ws.jsp.webcontainerext.JSPExtensionProcessor] has been associated with patterns [*.jsp *.jspx *.jsw *.jsv ].
in the root_dir/logs/server_name/SystemOut.log fileNo Extension Processor found for handling JSPs. JSP Processor not defined. Skipping : jspfilename.
アクセスを試みている JSP ファイルをホスティ ングしているサーバーのログを参照します。 次のメッセージは、JSP プロセッサーが正常に起動したことを示します。
JSP プロセッサーがロードに失敗した場合、以下のようなメッセージが表示されます。Extension Processor [class com.ibm.ws.jsp.webcontainerext.JSPExtensionProcessor] was initialized successfully. Extension Processor [class com.ibm.ws.jsp.webcontainerext.JSPExtensionProcessor] has been associated with patterns [*.jsp *.jspx *.jsw *.jsv ].
in the server log files.No Extension Processor found for handling JSPs. JSP Processor not defined. Skipping : jspfilename.
- JSP エンジンが正常に始動した場合は、JSP ファイルそのものに問題がある可能性があります。
JSP が無効な JSP 構文で、 JSP プロセッサーで処理できない場合があります。ターゲット・アプリケーションの root_dir/logs/server_name/SystemOut.log ファイルで、無効な JSP 指示構文のメッセージを調べます。 ブラウザーに表示される、以下に類似したエラーは、このタイプの問題を示しています。
この例では、指定された JavaServer Pages ファイルの 2 行目の列 1、jsp:include action で、必須属性が欠落していることが示されています。他の構文エラーの場合にも、同様なメッセージが表示されます。Message: /filename.jsp(2,1)JSPG0076E: Missing required attribute page for jsp element jsp:include
JSP が無効な JSP 構文で、 JSP プロセッサーで処理できない場合があります。ターゲット・アプリケーションのサーバー・ログ・ファイルで、無効な JSP 指示構文のメッセージを調べます。 ブラウザーに表示される、以下に類似したエラーは、このタイプの問題を示しています。
この例では、指定された JavaServer Pages ファイルの 2 行目の列 1、jsp:include action で、必須属性が欠落していることが示されています。他の構文エラーの場合にも、同様なメッセージが表示されます。Message: /filename.jsp(2,1)JSPG0076E: Missing required attribute page for jsp element jsp:include
- ターゲット・アプリケーション・サーバーの SystemErr.log ファイルで、無効な
Java™ 構文に関する問題がないか調べます。
ブラウザーのメッセージに「JSP のクラスをコンパイルできません」のようなエラーが表示されるのは、この種の問題を示しています。Javac コンパイラーからのエラー・メッセージは、SystemErr.log ファイルに出力されます。 これは、次のように記述されます。
JSPG0091E: An error occurred at line: 2 in the file: /myJsp.jsp JSPG0093E: Generated servlet error: c:¥WASROOT¥temp¥ ... test.war¥_myJsp.java:16: myInt is already defined in com.ibm.ws.jsp20._myJsp int myInt = 122; String myString = "number is 122"; static int myStaticInt=22; int myInt=121; ^ 1 error
JSP ファイル内のエラーを訂正して、ファイルを再試行します。
- ターゲット・アプリケーションのログ・ファイルで、無効な Java 構文に関する問題がないか調べます。
ブラウザーのメッセージに「JSP のクラスをコンパイルできません」のようなエラーが表示されるのは、この種の問題を示しています。
Javac コンパイラーからのエラー・メッセージは、SystemErr.log に出力されます。 これは、次のように記述されます。
JSPG0091E: An error occurred at line: 2 in the file: /myJsp.jsp JSPG0093E: Generated servlet error: c:¥WASROOT¥temp¥ ... test.war¥_myJsp.java:16: myInt is already defined in com.ibm.ws.jsp20._myJsp int myInt = 122; String myString = "number is 122"; static int myStaticInt=22; int myInt=121; ^ 1 error
Javac コンパイラーからのエラー・メッセージは、サーバー・ログ・ファイルに出力されます。 これは、次のように記述されます。
JSPG0091E: An error occurred at line: 2 in the file: /myJsp.jsp JSPG0093E: Generated servlet error: c:¥WASROOT¥temp¥ ... test.war¥_myJsp.java:16: myInt is already defined in com.ibm.ws.jsp20._myJsp int myInt = 122; String myString = "number is 122"; static int myStaticInt=22; int myInt=121; ^ 1 error
JSP ファイル内のエラーを訂正して、ファイルを再試行します。
プリコンパイルを使用した場合に JavaServer Pages がコンパイルに失敗する
症状 | 問題 | 推奨される解決法 |
---|---|---|
プリコンパイルが選択されている際、管理コンソールでのデプロイメント中に JavaServer Pages がコンパイルに失敗します。
|
どのクラスパスでも使用できない別の Java アーカイブ (JAR) ファイルへの依存関係がある場合に、プリコンパイルが選択されると、 管理コンソールからのデプロイメント中に JavaServer Pages がコンパイルに失敗します。 | エンタープライズ・アプリケーションのデプロイメント中に JSP ファイルをプリコンパイルするために wsadmin スクリプトを使用することができます。
しかし、管理コンソールを使用するには、アプリケーションをパッケージ化する前に、すべての JSP ファイルをコンパイルします。
|
JSPG0089E: ページ・ディレクティブ・エンコード Shift_JIS と xml prolog エンコード UTF-8 との間に不一致が検出されました。
症状 | 問題 | 推奨される解決法 |
---|---|---|
以下のエラーが表示されます。
|
jsp:directive.page エレメントの pageEncoding 属性が UTF-8 ではありません。 | JavaServer Pages では、ページ・ディレクティブで指定されたエンコード方式にマッチングする prolog を指定する必要があります。
以下に例を示します。
追加情報については、JavaServer Pages 仕様の JSP.4.1 節「Page Character Encoding」および Extensible Markup Language (XML) 仕様の 4.3.3 節および付録 F.1 を参照してください。 |
これらの手順で問題が解決されない場合は、『問題の診断および修正: 学習用リソース』トピック内のリンクを使用して、問題が特定され、文書化されているかどうかを確認してください。 類似した問題が見つからない場合、または提供されている情報では問題が解決されない場合は、IBM サポートに連絡してください。
IBM サポートから入手可能な既知の問題およびその解決法に関する最新の情報については、IBM サポート・ページを参照してください。IBM サポート・ページに提供されている資料を参照すれば、 この問題を解決するために必要な情報を集める時間を節約できます。