- PR -

Tomcat6でエラーページが表示されない

1
投稿者投稿内容
しましま
会議室デビュー日: 2003/04/01
投稿数: 14
投稿日時: 2007-03-15 15:50
表題の件でお分かりの方がいらっしゃいましたら、教えて頂けますでしょうか。

[環境]
Windows XP
Java SE 6
Tomcat 6.0.10

[問題]
以下のようにweb.xmlを指定してもエラー時にデフォルトの例外トレースが表示されてしまい、指定したエラーページに移動しない

---
<error-page>
<exception-type>java.lang.Exception</exception-type>
<location>/error.jsp</location>
</error-page>
---

同じコードがTomcat 5.5で動作することは確認しています。
どうもTomcat6になってうまく動作しないものがいくつか出ているのですが(以下)、Tomcat6はそんなに変わっているのでしょうか。http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=37269&forum=12&0
JSPやサーブレットの変更はほとんどないと思っていたもので、気軽にTomcat 6に移行してみたのですが、すこし戸惑っています。

お分かりの方がいらっしゃいましたら、お教えください。
ひろ@ya
大ベテラン
会議室デビュー日: 2006/02/23
投稿数: 168
投稿日時: 2007-03-15 18:41
そもそも実装している Servlet API / JSP のバージョンから違います。
http://tomcat.apache.org/whichversion.html
元となる仕様のバージョンが違う以上、それを実装したTomcatの各メジャーバージョンで
動作が違うのは当然と考えるべきです(仕様の追加実装に伴うregressionを含めて)


[ メッセージ編集済み 編集者: ひろ@ya 編集日時 2007-03-15 19:13 ]
しましま
会議室デビュー日: 2003/04/01
投稿数: 14
投稿日時: 2007-03-15 19:11
はい、確かにTomcat6でサーブレット2.5になっているのは認識していたのですが、サーブレット2.4から2.5ではほとんど変わっていないと聞いていましたし、サーブレット2.5のweb.xmlの仕様を見ても特にエラーページ関連で変更があったようには見えないのですが…
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd
なにか変更があったのに見落としている点があるのかと思いまして、質問させて頂いた次第です。引き続きお教えいただければ幸いです。

ちなみに、pageディレクティヴからerrorPage属性を指定してもやはり動作しませんでした…
<%@ page errorPage="error.jsp" %>

[ メッセージ編集済み 編集者: しましま 編集日時 2007-03-15 19:13 ]
ひろ@ya
大ベテラン
会議室デビュー日: 2006/02/23
投稿数: 168
投稿日時: 2007-03-15 19:40
とりあえず Bugzilla に出てくるエラーページが出ない事例では

・何らかのWebアプリケーションフレームワークがエラーページを横取りしている
・レスポンスが既にflushされている

という物があるようですね。

今のところ Tomcat 6 についてはエラーページが出ないというバグは
Bugzillaには登録されていないようですが、過去には Tomcat 5.0.5で修正されたような
致命的なバグ(== を使うべき所で != を使っていた)もありますので、
コード:
<% throw new Exception(); %>


だけしか書いていない JSP でも再現するなら開発者のコミュニティに報告しても良いかもしれません。
しましま
会議室デビュー日: 2003/04/01
投稿数: 14
投稿日時: 2007-03-17 10:49
回答ありがとうございます。

まだ完全には確認できていないのですが、web.xmlから指定したエラーページの表示はできるようになりました(原因は不明なのですが、何度か再起動を繰り返しているうちに認識するようになりました)。

ただ、pageディレクティヴからのerrorPage指定はやはり動作しないようで…
とりあえずweb.xmlから動いているので問題はないのですが、気になるので、もうちょっと調べてみます
1

スキルアップ/キャリアアップ(JOB@IT)