- - PR -
EJB内のエラー処理
1
| 投稿者 | 投稿内容 |
|---|---|
|
投稿日時: 2002-07-24 15:29
サーブレットの場合は、エラーをcatchしたら、
RequestDispatcherでエラー表示用JSPにforwatdしていますが、 Bean内でエラーになった場合はいったいどうされていますか? JSPでコンボ作成のHTMLをプロパティで返すEJBをuseBeanしていますが、 EJBでDBエラーが発生した場合、エラーフラグプロパティをONします。 でも、このプロパティをJSP側で拾って(getProperty)、 エラーの時はエラーJSP、エラーなしの時は、そのままHTML表示と 分岐する方法が見つけられませんでした。 SCRIPTを使わなければいけないのでしょうか? エラー処理のことを考えたら、サーブレットを使った方がいいんでしょうか? 大変初歩的なことですみません。 |
|
投稿日時: 2002-07-24 17:04
>サーブレットの場合は、エラーをcatchしたら、
>RequestDispatcherでエラー表示用JSPにforwatdしていますが、 >Bean内でエラーになった場合はいったいどうされていますか? JSPから直接EJBを参照するのは得策ではありません。 JSPからEJBを直接参照すると、EJBをハンドリングするためのコードがクライアントコード内に点在するはずです。EJBのエラー処理は煩雑ですし、EJBの変更がクライアントにできるだけ影響しないように、EJBまわりのコードはクライアント内部では局所化した方がよいでしょう。 通常はEJBアクセスの部分のコードをライブラリ化して、EJBへのアクセスの層とプレゼンテーションの層を分離します。このライブラリの中でJNDIへのアクセスをおこなったり、EJBの例外をキャッチしてクライアント例外に変換してスローし直したりします。こうすることで、このライブラリの利用者はEJBのAPIの知識がなくてもEJBを操作できるようになります。 このライブラリをJavaBeanとして実装することは可能でしょう。 >JSPでコンボ作成のHTMLをプロパティで返すEJBをuseBeanしていますが、 >EJBでDBエラーが発生した場合、エラーフラグプロパティをONします。 EJB実装内部ですべてのエラーをキャッチしてプロパティをONにすることは不可能です。 EJB実装で発生する例外はDBエラーだけとは限りません。JSP<->EJB間で通信エラーが発生することもあるでしょうし、バグによるシステム例外が発生してトランザクションがrollbackすることもあるでしょう。つまり、このような作りは思ったようには機能しません。 >このプロパティをJSP側で拾って(getProperty)、 >エラーの時はエラーJSP、エラーなしの時は、そのままHTML表示と >分岐する方法が見つけられませんでした。 JSPの実体はServletですから、Javaのコードを埋め込めば大抵のことはできます。 しかし、JSPがJavaコードだらけになったら、何のためのJSPかわかりません。 >エラー処理のことを考えたら、サーブレットを使った方がいいんでしょうか? そうでしょうね。 |
|
投稿日時: 2002-07-24 18:27
返答ありがとうございます。
>JSPからEJBを直接参照すると、EJBをハンドリングするためのコードがクライアントコー >ド内に点在するはずです。EJBのエラー処理は煩雑ですし、EJBの変更がクライアントに >できるだけ影響しないように、EJBまわりのコードはクライアント内部では局所化した方 >がよいでしょう。 >通常はEJBアクセスの部分のコードをライブラリ化して、EJBへのアクセスの層とプレゼ >ンテーションの層を分離します。このライブラリの中でJNDIへのアクセスをおこなった >り、EJBの例外をキャッチしてクライアント例外に変換してスローし直したりします。 >こうすることで、このライブラリの利用者はEJBのAPIの知識がなくてもEJBを操作できる >ようになります。 >このライブラリをJavaBeanとして実装することは可能でしょう。 Java初心者なので、理解するのが難しいのですが、 「EJBの例外をキャッチしてクライアント例外に変換してスローする」 方法は、以下で見つけることができました。 http://www.kt.rim.or.jp/~s-matsu/sub/prog/unskill035.html >>エラー処理のことを考えたら、サーブレットを使った方がいいんでしょうか? >そうでしょうね。 JSPからサーブレットを呼ぶのも初心者にはハードルが高いと感じました。 HTMLのFORMのactionにサーブレットのリンクを貼るのは簡単なのですが、 コンボの表示ですから、ユーザーがボタンを押してからではなく 勝手に(?)サーブレットに行かないといけません。 スクリプトレットでサーブレットを呼ぶ処理を書こうとすると、 サーブレットからサーブレットを呼ぶ(サーブレットチェーン?)で なんだか大変な響きがして、すごい壁を感じてしまいました。 そして、useBeanでパパッと使えるBeanでプログラムを作り始めたのですが 「あ!エラー処理...」ととまってしまいました。 DBのテーブルを参照してHTMLを作るだけのBeanなので、 たいしたことはないのですが、mikiさんの言われるような方法で ちゃんとエラーを拾わないとユーザーに変な画面を見せることになりますね。 まず、 「EJBの例外をキャッチしてクライアント例外に変換してスローする」 処理を作ってみたいと思います。 丁寧にご教授頂き、本当に感謝します。 |
|
投稿日時: 2002-07-24 19:31
どうやらEJBとJavaBeanを混同されているようですね。
EJBとJavaBeanはまったく別物です。 言葉は正しく使いましょう。 |
|
投稿日時: 2002-07-25 14:13
すみません。よく勉強します。
throwの部分、コードの書き方はたくさん資料があったのですが、 それがその後、どうなっているのかがさっぱり検討がつかないのですけど、 throwしたエラーはJSPでどうやって受けとるんですか? |
1
