[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 メーリングリストの案内