C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[2]: Seasar2_にインターセプタ追加


(過去ログ 55 を表示中)

[トピック内 4 記事 (1 - 4 表示)]  << 0 >>

■31167 / inTopicNo.1)  Seasar2_にインターセプタ追加
  
□投稿者/ のりよし (1回)-(2009/01/16(Fri) 00:11:57)

分類:[Java] 

Seasar2を試そうとして極々初歩的な箇所で躓いてしまいました。

環境は以下の通りです。
 WindowsXP SP3
 JDK1.5
 Eclipse Preiades 3.3(+各種プラグイン)
 Tomcat5.5

チュートリアルを持ってきて、IndexAction及びAddActionのメソッドにてjava.util.Dateを生成し、
下記Seasar2のAOP説明ページのDate#getTimeの動作のトレースインターセプタを
追加してみたのですが、あっさりgetTimeのログが出るものと思いきや出力されませんでした。

参考元URL
http://s2container.seasar.org/2.4/ja/aop.html#TraceInterceptor

# 逆にここでログが出ないなどとは思わなかったためとても気になってしまっています…。(^^;

識者の皆様に
・どこの設定が誤っているのか
・何か理解不足な箇所があるようであればそのポイント
を示していただけると幸いです。

--- app.dicon ---
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE components PUBLIC "-//SEASAR//DTD S2Container 2.4//EN"
	"http://www.seasar.org/dtd/components24.dtd">
<components>
	<include path="convention.dicon"/>
	<include path="aop.dicon"/>
	<include path="j2ee.dicon"/>
	<include path="s2jdbc.dicon"/>
	<!-- 追加ここから -->
	<component class="java.util.Date">
	    <aspect pointcut="getTime">
	        <component class="org.seasar.framework.aop.interceptors.TraceInterceptor"/>
	    </aspect>
	</component>
	<!-- 追加ここまで -->
	<component name="actionMessagesThrowsInterceptor" class="org.seasar.struts.interceptor.ActionMessagesThrowsInterceptor"/>
</components>
----------------

--- IndexAction ---
package tutorial.action;

import java.util.Date;

import org.seasar.struts.annotation.Execute;

public class IndexAction {

	@Execute(validator = false)
	public String index() {
	        Date date = new Date(); // 追加
        	date.getTime();         // 追加
		return "index.jsp";
	}
}
[注]AddActionの全メソッドについても同じような追加を行っています。
-------------------

--- 出力されたログ ---
DEBUG 2009-01-15 20:38:25,781 [http-8080-Processor24] クラス(tutorial.form.AddForm[addForm])のコンポーネント定義を登録します
DEBUG 2009-01-15 20:38:25,781 [http-8080-Processor24] BEGIN tutorial.action.AddAction#index()
DEBUG 2009-01-15 20:38:25,781 [http-8080-Processor24] トランザクションを開始しました。tx=[FormatId=4360, GlobalId=1232019439343/2, BranchId=]
DEBUG 2009-01-15 20:38:25,781 [http-8080-Processor24] トランザクションをコミットしました。tx=[FormatId=4360, GlobalId=1232019439343/2, BranchId=]
DEBUG 2009-01-15 20:38:25,781 [http-8080-Processor24] END tutorial.action.AddAction#index() : index.jsp
DEBUG 2009-01-15 20:38:25,796 [http-8080-Processor24] 
[注]IndexActionの動作時についても同じようなログが出力されています。
----------------------

以上です。よろしくお願いいたします。

引用返信 編集キー/
■31223 / inTopicNo.2)  Re[1]: Seasar2_にインターセプタ追加
□投稿者/ ひが (1回)-(2009/01/17(Sat) 10:31:55)
> Date date = new Date(); // 追加
直接、newしたらコンテナが関与できないので、
AOPはかかりません。

コンポーネントに次のように名前をつけて、
<component name ="date" class="java.util.Date">
<aspect pointcut="getTime">
<component class="org.seasar.framework.aop.interceptors.TraceInterceptor"/>
</aspect>
</component>

アクションのフィールドを
@Resource
protected Date date;
のようにフィールド名をコンポーネント名とあわせれば、
Seasar2が自動的に設定します。

Seasar2が作ったDateなら、AOPがかかっているはずです。

後、何度か言っていますが、2chのSeasarスレは、
技術的な質問をするには向いていないので、
自分のblogに書くか(回答は得られないかもしれないけど)、
Seasar-user MLに質問する(ほとんど回答が返ってくる)のが確実です。
引用返信 編集キー/
■31228 / inTopicNo.3)  Re[2]: Seasar2_にインターセプタ追加
□投稿者/ のりよし (4回)-(2009/01/17(Sat) 23:39:31)
2009/01/20(Tue) 14:30:26 編集(投稿者)

ご回答ありがとうございます。
# まさかひがさんご本人から返事がいただけるとは恐縮です。

質問内容については今と異なる環境で実施していたため、
そちらに戻り次第、確認してみます。
(確認後に「解決済み」にしたいと思います。)

また、メーリングリストについても参加させていただきますね。
# Seasar2によるスーパーアジャイルなWeb開発 購入させていただきました。
# SAStruts+S2JDBCの本についても購入予定です。楽しみにしてます。

引用返信 編集キー/
■31367 / inTopicNo.4)  Re[2]: Seasar2_にインターセプタ追加
□投稿者/ のりよし (5回)-(2009/01/20(Tue) 19:47:30)
2009/01/20(Tue) 19:49:48 編集(投稿者)
2009/01/20(Tue) 19:48:59 編集(投稿者)
<pre><pre>2009/01/20(Tue) 19:48:04 編集(投稿者)
2009/01/20(Tue) 19:48:01 編集(投稿者)

教えていただいた内容でログトレースに成功しました。
ひがさん、わざわざありがとうございました。

設定を再度掲載します。

--- app.dicon ---
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE components PUBLIC "-//SEASAR//DTD S2Container 2.4//EN"
	"http://www.seasar.org/dtd/components24.dtd">
<components>
	<include path="convention.dicon"/>
	<include path="aop.dicon"/>
	<include path="j2ee.dicon"/>
	<include path="s2jdbc.dicon"/>
	<!-- 追加ここから -->
	<component name="date" class="java.util.Date"> <!-- さらに name="date" を追加 -->
	    <aspect pointcut="getTime">
	        <component class="org.seasar.framework.aop.interceptors.TraceInterceptor"/>
	    </aspect>
	</component>
	<!-- 追加ここまで -->
	<component name="actionMessagesThrowsInterceptor" class="org.seasar.struts.interceptor.ActionMessagesThrowsInterceptor"/>
</components>
----------------

--- IndexAction ---
    @Resource            // <- 追加
    protected Date date; // <- 追加

    @Execute(validator = false)
    public String index() {
        // Date date = new Date(); // コメントアウト
        date.getTime();
        return "index.jsp";
    }
-------------------

--- 出力されたログ ---
DEBUG 2009-01-20 19:33:30,246 [http-8080-Processor25] BEGIN tutorial.action.IndexAction#index()
DEBUG 2009-01-20 19:33:30,262 [http-8080-Processor25] トランザクションを開始しました。tx=[FormatId=4360, GlobalId=1232447610262/0, BranchId=]
DEBUG 2009-01-20 19:33:30,262 [http-8080-Processor25] BEGIN java.util.Date#getTime()                      <- getTime()のログ
DEBUG 2009-01-20 19:33:30,262 [http-8080-Processor25] END java.util.Date#getTime() : 1232447452949        <- getTime()のログ
DEBUG 2009-01-20 19:33:30,262 [http-8080-Processor25] トランザクションをコミットしました。tx=[FormatId=4360, GlobalId=1232447610262/0, BranchId=]
DEBUG 2009-01-20 19:33:30,262 [http-8080-Processor25] END tutorial.action.IndexAction#index() : index.jsp
DEBUG 2009-01-20 19:33:30,605 [http-8080-Processor25] 
----------------------

AddActionについては別の取得方法に変えてみました。
--- AddAction -----
    @Execute(input = "index.jsp")
    public String submit() {
        result = Integer.valueOf(addForm.arg1) + Integer.valueOf(addForm.arg2);
        S2Container container = SingletonS2ContainerFactory.getContainer();     // <- 追加
        Date mydate = (Date) container.getComponent("date");                    // <- 追加
        mydate.getTime();                                                       // <- 追加
        return "index.jsp";
    }
-------------------

--- 出力されたログ ---
DEBUG 2009-01-20 19:39:35,543 [http-8080-Processor24] クラス(tutorial.form.AddForm[addForm])のコンポーネント定義を登録します
DEBUG 2009-01-20 19:39:35,793 [http-8080-Processor24] BEGIN tutorial.action.AddAction#submit()
DEBUG 2009-01-20 19:39:35,793 [http-8080-Processor24] トランザクションを開始しました。tx=[FormatId=4360, GlobalId=1232447610262/2, BranchId=]
DEBUG 2009-01-20 19:39:42,152 [http-8080-Processor24] BEGIN java.util.Date#getTime()                <- getTime()のログ
DEBUG 2009-01-20 19:39:42,152 [http-8080-Processor24] END java.util.Date#getTime() : 1232447452949  <- getTime()のログ
DEBUG 2009-01-20 19:39:42,152 [http-8080-Processor24] トランザクションをコミットしました。tx=[FormatId=4360, GlobalId=1232447610262/2, BranchId=]
DEBUG 2009-01-20 19:39:42,152 [http-8080-Processor24] END tutorial.action.AddAction#submit() : index.jsp
DEBUG 2009-01-20 19:39:42,168 [http-8080-Processor24] 
----------------------
</pre></pre>

解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -