[seasar-dev:441] [S2JMS] JMS Message のバインド
Koichi Kobayashi
koichik @ improvement.jp
2006年 6月 25日 (日) 01:01:25 JST
小林 (koichik) です.
最近 S2.4 に新しい機能が追加されました.
従来,S2JSF などで Request や Session の属性なんかを
コンポーネントのプロパティにバインドする機能がありましたが,
それが S2 コンテナにより提供されるようになりました.
そこで,S2JMS も従来の @Payload アノテーション等を廃止して,
JMS Message とコンポーネントのバインドは S2 コンテナに
お任せしようかと考えています.
そうすることで,他の S2 ファミリとも一貫性が出てきますし,
これまで以上に S2JMS を利用するために必要な知識が無くなります.
Servlet 非依存とはいえ,ExternalContext の request はほぼ
Serlvet の HttpServletRequest そのままで,Header,Parameter,
Attribute の 3 つの領域を持っています.
このうち Attribute はアプリケーションで自由に使える領域なので,
残り 2 つを JMS Message に対応付けることになります.
そして JMS Message は Header,Property,Payload という 3 つの
領域からなる構造となっています.
1 つ多いわけね.
このうち,主たる情報である Payload を Parameter に割り当てるのが
自然かな,と思います.
Payload は MapMessage の場合に限り名前の付いた属性を持ちますが,
それ以外の時は Payload 自身が属性になります.
そこで,Payload 自身は "payload" という名前でアクセスできることに
しようかと.
そしてこれまで同様,JMS Message 自身を "message" で取れるように
します.これは request Attribute (これも従来同様).
そうなると JMS Message の Header と Property は request の
Header としてアクセスすることになります.
JMS Message の Header 属性は JMS というプレフィックスを持つので,
Property と同じ名前空間で使っても問題はない気もしますが,
JMS で始まるプロパティを持ちたくはないだろうと思うので,従来同様
JMS で始まらない名前でもアクセスできるようにしたいところ.
もし JMS Header からプレフィックスを除いたのと同名の JMS Property が
存在する場合は JMS Property 優先かな.
必要なら @Binding アノテーションでプレフィックス付きの名前を
指定することができるし.
という具合に考えていますがいかがでしょうか?
--
<component name="koichik">
<property name="fullName">"Koichi Kobayashi"</property>
<property name="email">"koichik @ improvement.jp"</property>
<property name="blog">"http://d.hatena.ne.jp/koichik"</property>
</component>
Seasar-dev メーリングリストの案内