-スコープ概念

金曜に豆ナイトでJBoss Seamを聞きました。うーん、もうちょっとSeamについて知った上で話してほしかったなぁという感想は、自分で調査せずにセミナー聞いてすまそうという甘い考えへのお仕置きだったのでしょう。
さて、そんな中、Seamのスコープ概念が取り上げられていました。WEBアプリケーションでは、ServletAPI起源の「Application」「Session」「Request」というスコープがありますが、Seamはそれらとは独立した「Conversation」というスコープがあります。これはあらかじめ@Begin-@Endをアノテーション指示したメソッドが実行されると生成-破棄される活性期間で、可視性は同一スレッド(というのか、同一セッションというべきか。どちらも正しく、どちらも正しくない)に限ります。これは面白いね。活性期間中の保存場所はいくつか選べる設定項目だというようなことも聞いたので、ここは自分でコードあたって調べてみようと思っています。
Ikushipeで「Cookie」スコープを作り、「Rendering」スコープを作りました。前者は名前どおり、Cookieに保存するものでCookieの仕様に依存した振る舞いをします。後者はページ指向かつRESTを追求してみた結果、ページ遷移にリダイレクトを多用する結果となったため、ServletAPIの「Request」スコープを拡張して、フレームワーク都合によるリダイレクト時に「Session」スコープにその瞬間だけ一時退避し、後に「Request」に戻してくるという仕組みです。これらと「Conversation」の発想ポイントはたぶんまったく違っていて、ServletAPIからのみ仕様アイディアを広げていったIkushipeに対し、SeamjBPM等のSOA的な流行を先にユースケースに織り込んだのだなと。
SOAはともかくEJB3の受け入れも考えておきますかね。Seasar2 & KuinaEJB3のスタックになってるし。