- PR -

web.xmlのerror-page要素exception-type属性について

1
投稿者投稿内容
d@
会議室デビュー日: 2007/06/06
投稿数: 1
投稿日時: 2007-06-06 01:25
はじめまして。
WebSphere v6.0 × Rational Web Developer v6.0 × 某Strutsを拡張した商用FW で
Webシステムを開発しているのですが、どうにも解決できない問題があります。
皆様のお知恵を貸してください。

使用しているFWに、ログイン認証済み/未認証を判定し、特定パスへのアクセス制限をかける機能があります。処理的には

1.フィルタ起動
2.特定パスかどうかのチェック
3.ログイン認証フラグがセッションに存在するかチェック
4.ログイン認証フラグが存在しなければFWの例外をthrow
5.web.xmlで定義したerror-page要素exception-type属性でcatchしてエラー画面のHTMLへ遷移

・・・という流れです。

この 5.web.xmlで定義した〜 のところで悩んでいます。

Rational Web Developer v6.0でweb.xmlを編集する場合、web.xml専用のエディタが起動し、
error-page要素exception-type属性設定するダイアログを呼び出すと
クラスパスが通っているExceptionのサブクラスがリスト表示され、
その中からcatchする例外クラス選択する方式になっています。
(手で直接入力することはできません)
ですが、そのリストにFWが指定する例外クラスが表示されないのです。

以下、現時点で確認したこと・試してみたことです。

・クラスパスは確実に通っています。(FWが指定する例外クラスと同じパッケージに存在する別の例外クラスはリストに表示されます)

・FWが指定するクラスはServletExceptionのサブクラスで、処理は何もありません。

・手作りのServletExceptionのサブクラスをweb.xmlと同じプロジェクト内に作成してみましたが、そちらもリストに表示されませんでした。

・手作りのRuntimeExceptionのサブクラスをweb.xmlと同じプロジェクト内に作成してみましたが、そちらもリストに表示されませんでした。

・開発ツールのweb.xml専用エディタを使用せず、テキストエディタで直接web.xmlを編集してexception-type属性にFWが指定する例外クラスを記述したところ、catchされずに500エラーとなりました。(スタックトレースより、FWが指定する例外クラスのインスタンスが生成されたことは確認しました)


・・・というわけで、どうにも手詰まり状態になっています。
とりあえず、FWのAPI及びweb.xmlのerror-page要素を使用しないで
アクセス制限をかけるフィルタを手作りで作成して仮実装としていますが、どうにも気持ち悪いです。
ひょっとするとexception-type属性で指定できるクラスには何らかの制限があるのでしょうか?
その他、チェックすべき事をご指摘いただければ幸いです。
朝日奈ありす
大ベテラン
会議室デビュー日: 2007/05/02
投稿数: 189
お住まい・勤務地: 最北の地
投稿日時: 2007-06-06 07:56
┌システム─┐
│FW    │
└─────┘これなら キャッチ可能

┌FW───┐
│システム │
└─────┘これなら キャッチ不可能

システム───FW これもキャッチ不可能

1

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