
お世話になります。
Tomcat5.5、Linux環境下で、
WEB-INF/web.xmlに
<error-page>
<error-code>500</error-code>
<location>/jsp/error.jsp</location>
</error-page>
<error-page>
<error-type>java.lang.Exception</error-type>
<location>/jsp/error.jsp</location>
</error-page>
という記述をしています。
(Tomcatは問題なく起動しています)
サーブレット内でエラーが起こるように設定したのですが、作成したerror.jspに飛ばず、通常の500のエラーページが表示されます。
サーブレット記述
doGet(... ) throws ServletException,IOException {
...処理
try {
throw new IOException(); //ここでExceptionをわざと起こしています。
...処理
} catch (Exception e) {
e.printStackTrace();
throw new ServletException(e);
}
なぜ、独自のエラーページに飛んでくれないのか原因が分からず投稿させていただきました。
どなたかアドバイスお願いします。
No.8ベストアンサー
- 回答日時:
<error-page>要素を書く位置が間違っているとか。
<tag-lib>要素の前、<welcome-file-list>要素の次に書かないと設定に反映されません。
この場合は起動ログにしっかりエラーが記録されているはずです。
いずれにしてもケアレスミスの可能性が高いと思われます。
TOMCAT_HOME/conf/web.xml にも<error-page>を記述してみては?
この回答への補足
web.xmlの要素位置(<error-code>)を直したら、
Tomcatデフォルトのエラーページはでなくなりました。
代わりに、
「ページを表示できません HTTP500 内部サーバエラー」
となってしまうようになりました。
指定しているエラーJSPのファイル自体が悪いのかと思い、
簡単なHTMLファイルに置き換えて表示させてみましたが、結果は
同じでした。
No.6
- 回答日時:
500問題とはあまり関係のない事ですが・・
web.xmlのスキーマ(http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd)見ると、error-page要素の子要素はerror-codeかexception-typeのみのようですね。
No.5
- 回答日時:
なんだかもう原因特定できないような気がしてきました・・。
first-tryさんは、JSP以外に、Servletは使われてますか?
というのも、Servletを使うには、サーブレットの登録とマップをweb.xmlで行わなければいけませんよね。
もしも使えなかったら、web.xmlで正しくマッピングできていないと考えることができて、原因はそこにあると考えられます。
(もうweb.xmlが反映されてないことを疑うしかない。。)
ちなみに、web.xmlがドキュメントベースになくても、こちらの環境では問題なくコンテナは立ち上がりますので、コンテナが起動しているからweb.xmlが正しく認識されているとは限らないと思います。
・・・いろいろと低質な回答をぐだぐだと書いてしまいましたが、今回のチェックポイントでだめならば、私の力では本当にお手上げです。
No.3
- 回答日時:
すみません、どうやらこちらで勝手に原因を思い込んでいたみたいです(自分がサイズの問題を経験したせいです)。
ここからはアドバイス程度しかできませんが、
1, web.xmlを変更してからコンテナを再起動したか
2, 普通にそのページにアクセスして、きちんと表示されるか
例えば、http://localhoost:8080/jsptestがコンテキストルートだとすると、http://localhost:8080/jsptest/jsp/error.jspに普通にアクセスして、きちんと表示されるかどうかです。
3, エラーログにエラーが出力されていないか
これらを確認するくらいですね。。
勝手な想像ですが、2番が怪しいかなと思っています。
この回答への補足
いつもいつも素早い回答ありがとうございます。
>1, web.xmlを変更してからコンテナを再起動したか
はい、再起動しています。
>2, 普通にそのページにアクセスして、きちんと表示されるか
はい、きちんと表示されます。
ちなみに中身は、
<%= exception.toString() %>
<%= exception.getMessage() %>
のみです。
>3, エラーログにエラーが出力されていないか
エラーログとは、catalina.outのことでしょうか?
私が設定したエラー以外は吐き出されないのですが・・・
No.2
- 回答日時:
>生成されるページが何byteか、とはどうやったらわかるのでしょうか?
サイズが小さすぎると表示されないのはInternet Explorerのみなので、まずはFireFoxやその他のIE以外のブラウザでうまくいくかどうか試します。
サイズが小さすぎると表示されない問題は、
404でも500でも、すべてについてInternet Explorerでのみ発生します。
なので、500 Server Errorの問題が解決すれば、404も解決すると思います。
この回答への補足
早々のご返答ありがとうございます。
FireFoxで試してみましたが、結果はIEと同じでした。
このことからわかることはありますでしょうか?
何かあれば、アドバイスお願いします。
No.1
- 回答日時:
/jsp/error.jspファイルが生成するページにデータは、600byte以上ありますか?
それ以下(5百と数十バイト)だと、正常にページが表示されません。
この回答への補足
アドバイスありがとうございます。
無知なためもうひとつ教えてください。
生成されるページが何byteか、とはどうやったらわかるのでしょうか?
error.jspの中身は、
<%= exception.toString() %>
<%= exception.getMessage() %>
なので、エラーごと、生成されるbyte数は違うと思います。
また、WEB-INF/web.xmlに
<error-page>
<error-code>404</error-code>
<location>/jsp/error.jsp</location>
</error-page>
といった記述を追加してみました。
そして存在しないファイル名をURLに打ったのですが、
通常の404エラーページが表示されてしまいます。
こちらもアドバイスありましたら、お願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Tomcatを再起動するとエラーと...
-
Eclipse、Tomcat、Mysql で開...
-
web.xmlでのエラーページ
-
ibatis初心者 設定エラー
-
アップロードした画像の格納先...
-
Eclipseで日本語文字化け
-
Eclipseで、プロジェクト名のと...
-
正しいURL指定しているにもかか...
-
Tera Term ネットワークに到達...
-
Eclipse・プロジェクトで、フォ...
-
Eclipse(JAVA)のデバッグで他...
-
Javascriptの値をJava(JSP)へ渡...
-
javaクラスファイルをEclipseで...
-
MSDNのコレクションがありませ...
-
「ワークスペースをビルド中」...
-
【Eclipse】パッケージ・エクス...
-
SVFの設定について:クラスパス...
-
Eclipseのアンインストールの仕方
-
VBプログラムから「管理者とし...
-
JADで*.jarごとデコンパイルす...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
TomcatでのHTMLの表示
-
org.xml.sax.SAXParseException...
-
アップロードした画像の格納先...
-
【Tomcatが突然動かなく...
-
JSTLで、x:out でXpathを指定し...
-
struts使用時のソースの位置
-
web.xmlの中の<web-app>につい...
-
Java WebアプリケーションよりW...
-
Tomcat Apache 新規アプリケー...
-
System.exitをwebで使うと良く...
-
jsp サーブレットについての質...
-
web.xmlでtaglib-locationを設...
-
web.xmlでのエラーページ
-
StrutsのDataSourceの使い方。...
-
Tomcatを再起動するとエラーと...
-
ibatis初心者 設定エラー
-
TomcatとEclipseのweb.xml[]に...
-
Tomcat6のコネクションプーリン...
-
jspでこんなエラーが出ます
-
Tomcatのエラーページをカスタ...
おすすめ情報