- blogs:
- cles::blog
2004/09/08

Seasar2でHttpSessionにアクセス
Seasar2を使ってWebアプリケーションを作っていると、コンポーネントからHttpSessionにアクセスしたいという場合が出てきます。
問題はコンポーネントにどうやってHttpSessionを渡せばよいかというこなんですが、単純にコンポーネントの引数から渡すことで最低限の目標は達成できるというのはわかっています。ただ、これはちょっとダサい(というか問題がある)ソリューションです。なぜならば、コンポーネントがHttpSessionに依存してしまうため、JUnitなどのツールによる単体テストが大変になってしまうからです。
何かSeasarらしいいいアイディアがないかなぁとあれこれ考えてはみたものの、なかなかスマートな解決方法が見つからずに困っていました。
† Contextを保持するコンポーネントを作ればいいのか
これを見事に解決できるアイディアが、Seasar2の作者であるひがさんのダイアリーに載っていました。
HttpServletRequestにアクセスしたいコンポーネントは、RequestContextをDIしてもらえばいいのです。テストのときには、ThreadLocalを使わないRequestContextの実装を使い、ThreadLocalの副作用を避けます。
ステートレスなビジネスロジックということにばかり頭が行っていて、Contextを保持するコンポーネントを作るという発想がぜんぜんありませんでした。これはいいですね。
† さらにスマートに
いちいちRequestとResponseをコンポーネントにセットするのが面倒くさかったので、それを自動的にやってくれるServletFilterもついでに書いてしまいました。
我ながらこれはいい感じに出来たと思います。
トラックバックについて
Trackback URL:
お気軽にどうぞ。トラックバック前にポリシーをお読みください。[policy]
このエントリへのTrackbackにはこのURLが必要です→https://blog.cles.jp/item/355
Trackbacks
このエントリにトラックバックはありません
Comments
愛のあるツッコミをお気軽にどうぞ。[policy]
古いエントリについてはコメント制御しているため、即時に反映されないことがあります。
古いエントリについてはコメント制御しているため、即時に反映されないことがあります。
コメントはありません
Comments Form
コメントは承認後の表示となります。
OpenIDでログインすると、即時に公開されます。
OpenID を使ってログインすることができます。
サイト内検索
検索ワードランキング
へぇが多いエントリ
閲覧数が多いエントリ
1 . アーロンチェアのポスチャーフィットを修理(112074)
2 . 福岡銀がデマの投稿者への刑事告訴を検討中(110700)
3 . 年次の人間ドックへ(110319)
4 . 2023 年分の確定申告完了!(1つめ)(109868)
5 . 三菱鉛筆がラミーを買収(109776)
2 . 福岡銀がデマの投稿者への刑事告訴を検討中(110700)
3 . 年次の人間ドックへ(110319)
4 . 2023 年分の確定申告完了!(1つめ)(109868)
5 . 三菱鉛筆がラミーを買収(109776)
cles::blogについて
Referrers