アプリ版:「スタンプのみでお礼する」機能のリリースについて

お世話になります。

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);
}

なぜ、独自のエラーページに飛んでくれないのか原因が分からず投稿させていただきました。
どなたかアドバイスお願いします。

A 回答 (8件)

<error-page>要素を書く位置が間違っているとか。


<tag-lib>要素の前、<welcome-file-list>要素の次に書かないと設定に反映されません。
この場合は起動ログにしっかりエラーが記録されているはずです。

いずれにしてもケアレスミスの可能性が高いと思われます。
TOMCAT_HOME/conf/web.xml にも<error-page>を記述してみては?

この回答への補足

web.xmlの要素位置(<error-code>)を直したら、
Tomcatデフォルトのエラーページはでなくなりました。
代わりに、
「ページを表示できません HTTP500 内部サーバエラー」
となってしまうようになりました。

指定しているエラーJSPのファイル自体が悪いのかと思い、
簡単なHTMLファイルに置き換えて表示させてみましたが、結果は
同じでした。

補足日時:2008/02/19 13:06
    • good
    • 0

> <error-type>


これはないでしょう。

この回答への補足

すみません、タイプミスです。
web.xml内では、きちんと
<exception-type>と書いていました。

補足日時:2008/02/19 09:14
    • good
    • 0

500問題とはあまり関係のない事ですが・・


web.xmlのスキーマ(http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd)見ると、error-page要素の子要素はerror-codeかexception-typeのみのようですね。
    • good
    • 0

なんだかもう原因特定できないような気がしてきました・・。



first-tryさんは、JSP以外に、Servletは使われてますか?
というのも、Servletを使うには、サーブレットの登録とマップをweb.xmlで行わなければいけませんよね。
もしも使えなかったら、web.xmlで正しくマッピングできていないと考えることができて、原因はそこにあると考えられます。
(もうweb.xmlが反映されてないことを疑うしかない。。)

ちなみに、web.xmlがドキュメントベースになくても、こちらの環境では問題なくコンテナは立ち上がりますので、コンテナが起動しているからweb.xmlが正しく認識されているとは限らないと思います。

・・・いろいろと低質な回答をぐだぐだと書いてしまいましたが、今回のチェックポイントでだめならば、私の力では本当にお手上げです。
    • good
    • 0

もしかしたら!


web.xmlの設定がまるで反映されてないんじゃ・・。

web.xmlファイルはきちんと
ドキュメントベース/WEB-INF/web.xml
にありますか?
WEB_INFとかの名前になったりしていませんか?

この回答への補足

はい、きちんと/WEB-INF/web.xmlになっています。
何より、サーブレットはきちんと動いています。

補足日時:2008/02/18 19:00
    • good
    • 0

すみません、どうやらこちらで勝手に原因を思い込んでいたみたいです(自分がサイズの問題を経験したせいです)。



ここからはアドバイス程度しかできませんが、
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のことでしょうか?
私が設定したエラー以外は吐き出されないのですが・・・

補足日時:2008/02/18 18:31
    • good
    • 0

>生成されるページが何byteか、とはどうやったらわかるのでしょうか?


サイズが小さすぎると表示されないのはInternet Explorerのみなので、まずはFireFoxやその他のIE以外のブラウザでうまくいくかどうか試します。

サイズが小さすぎると表示されない問題は、
404でも500でも、すべてについてInternet Explorerでのみ発生します。
なので、500 Server Errorの問題が解決すれば、404も解決すると思います。

この回答への補足

早々のご返答ありがとうございます。

FireFoxで試してみましたが、結果はIEと同じでした。

このことからわかることはありますでしょうか?
何かあれば、アドバイスお願いします。

補足日時:2008/02/18 17:51
    • good
    • 0

/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エラーページが表示されてしまいます。
こちらもアドバイスありましたら、お願いします。

補足日時:2008/02/18 16:44
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!