[Seasar-user:16549] 任意のクラスのコンストラクタへのロジックのWeaving方法

Takuya MACHIDA [E-MAIL ADDRESS DELETED]
2008年 12月 25日 (木) 10:09:41 JST


はじめまして。町田と申します。

この度、Webアプリケーションを作成するにあたり、初めて
Teedaを使用させていただいております。

質問させていただきたい内容としてはTeedaとは関係ないと思うのですが、
任意のクラスのコンストラクタが実行される前後にロジックを
織り込む方法です。
前提とする構成は
・Teeda : 1.0.13-sp4
・S2container : 2.4.32
・SMART Deployの推奨構成に従う
です。

想定する実装としては、ページクラスの生成時に
ユーザ承認処理を織り込みたいと思っております。

ある任意のメソッドが呼ばれた時点へのロジックの
織り込み方法については色々調べ、customizer.dicon
にてpageCustomizerに対してMethodInterceptorを実装した
interceptorを追加したAspectCustomizerを追加することで
対応出来ました。
この方法でpointcutに"initialize"を設定し当初実装していた
のですが、ページクラスにてinitializeメソッドが実装されていな
かった場合、当然織り込んだロジックは呼ばれません。

そこでコンストラクタへロジックを織り込もうと考え、同じような感じで
ConstructorInterceptorを実装したクラスをcustomizer.diconに
設定してみたのですが、AspectDefImpl#getAspect()にて
MethodInterceptorにcastする際にClassCastExceptionが
発生してしまいます(当たり前ですが)。

PhaseListenerを使用したりServletFilter使用したりするなど、
やりたいことの実現だけを考えれば他に方法はいくつかあるかと
思いますが、今回は「コンストラクタへのロジックの織り込み方法」
についてご教授頂ければと思います。

各資料は一通り目を通したつもりですが、見逃しているものがあれば
申し訳ありません。

以上、宜しくお願い致します。
--
MACHIDA Takuya


Seasar-user メーリングリストの案内