[Seasar-user:15599] 【S2Container】logicクラスでtraceInterceptorが動かない
黒川博之
[E-MAIL ADDRESS DELETED]
2008年 9月 2日 (火) 09:04:12 JST
黒川と申します。
diconに以下のように定義したlogicクラスのメソッドが実行はされますが
traceInterceptorが動かず、ログが出力されません。
Hogeを例として使うと、以下のようなイメージです。
【クラス】(全て同一パッケージ:example.logic.hoge)
public abstract class AbstractHogeLogic {
public String name;
public abstract void show();
}
public class HogeAaaLogic extends AbstractHogeLogic {
public void show() {
System.out.println("ほげAです。");
}
}
public calss HogeBbbLogic extends AbstractHogeLogic {
public void show() {
System.out.println("ほげBです。");
}
}
【hoge.dicon】(app.diconでincludeしています)
<component name="hogeLogicItems" class="java.util.ArrayList">
<initMethod name="add">
<arg>
<component name="hoge_hogeAaaLogic"
class="example.logic.hoge.HogeAaaLogic">
<property name="name">"ほげAaa"</property>
</component>
</arg>
</initMethod>
<initMethod name="add">
<arg>
<component name="hoge_hogeBbbLogic"
class="example.logic.hoge.HogeBbbLogic">
<property name="name">"ほげBbb"</property>
</component>
</arg>
</initMethod>
</component>
【sastrutsのindex()】
public class HogeAction {
@Resource
protected List<AbstractHogeLogic> hogeLogicItems = new
ArrayList<AbstractHogeLogic>();
@Execute(validator = false)
public String index() {
for (int i = 0; i < hogeLogicItems.size(); i++) {
AbstractHogeLogic hogeLogic = hogeLogicItems.get(i);
hogeLogic.show();
}
return "index.jsp";
}
}
なお、creator.diconとcustomizer.diconは以下のようになっており
上記のように、diconに記述していないlogicクラスは、メソッド実行時に
ログが出力されています。
【creator.dicon】
<component class="org.seasar.framework.container.creator.LogicCreator"/>
【customizer.dicon】
<component name="logicCustomizer"
class="org.seasar.framework.container.customizer.CustomizerChain">
<initMethod name="addCustomizer">
<arg>traceCustomizer</arg>
</initMethod>
</component>
hoge.diconで定義したhogeLogicItemsには、creator.dicon/customizer.diconでインターセプターを設定しても
インターセプターは適用されないのでしょうか?
また、インターセプターを適用させるためにはhoge.diconにどのように記述すればいいのでしょうか?
よろしくお願いします。
Seasar-user メーリングリストの案内