[Seasar-user:20056] [S2Chronos] Task内でのService使用について

鈴木 雄輔 [E-MAIL ADDRESS DELETED]
2010年 8月 10日 (火) 19:22:43 JST


お世話になっております。鈴木と申します。


現在、Teeda、S2JDBC、S2Chronos を使って開発を行っています。

Taskクラス内でS2JDBC-Genから生成されたServiceクラスを使用しているのですが、

同ServiceクラスをPageクラスで、使おうとすると下記メッセージが出力されます。

「WARN  org.seasar.framework.container.hotdeploy.HotdeployClassLoader - HOT
deploy対象クラス(xxx.agile.service.EmpService)が非対象クラスから参照されて通
常のクラスローダにロードされています。」

ServiceやLogicをバッチにも流用できるのがS2Chronosのコンセプトだったと思うの
ですが、何か使い方を間違えているのでしょうか?

この警告については、『Seasar2徹底入門』やひがさんのブログを参考に、

極力注意を払っていたのですが、まだまだ理解が足りていないようです。

程度の低い質問かもしれませんが、

どなたか警告を回避する方法をご存知でしたら、

ご教示いただけると大変ありがたく存じます。

S2Chronosのセッティングはhttp://s2chronos.sandbox.seasar.org/ja/install.html
の通り行っています。

環境、ソースは以下に明記しました。


■環境
-----------------------------------------------
Java - 1.6.0_20-b02
seasar2 - 2.4.41
teeda - 1.0.13
s2chronos - 1.0.0
tomcat - 5.5.26


■ソース
-----------------------------------------------
※convention.diconで指定したルートパッケージは xxx.agileです。

【S2JDBC - Serviceクラス ※S2JDBC-Genで生成】
package xxx.agile.service;
import java.util.List;
import javax.annotation.Generated;
import xxx.agile.entity.Emp;
import static org.seasar.extension.jdbc.operation.Operations.*;
import static xxx.agile.entity.EmpNames.*;
public class EmpService extends AbstractService<Emp> {
    public Emp findById(Long id) {
        return select().id(id).getSingleResult();
    }
    public Emp findByIdVersion(Long id, Integer versionNo) {
        return select().id(id).version(versionNo).getSingleResult();
    }
    public List<Emp> findAllOrderById() {
        return select().orderBy(asc(id())).getResultList();
    }
}

【S2Chronos - Taskクラス】
package xxx.agile.task;
import org.seasar.chronos.core.annotation.task.Task;
import org.seasar.chronos.core.annotation.trigger.NonDelayTrigger;
import xxx.agile.entity.Emp;
import xxx.agile.service.EmpService;
@Task
@NonDelayTrigger
public class InitialTask {
	public EmpService empService;
	public void doExecute() {
		Emp emp = empService.findById(1L);
		System.out.println(emp.empNo + "=" + emp.empName);
	}
}

【Teeda - Pageクラス】
package xxx.agile.web;
import xxx.agile.service.EmpService;
public class IndexPage {
	public EmpService empService;
	public Class<?> initialize() {
		return null;
	}
	public Class<?> prerender() {
		return null;
	}
}


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



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