<html>
  <head>

    <meta http-equiv="content-type" content="text/html; charset=ISO-2022-JP">
  </head>
  <body text="#000000" bgcolor="#FFFFFF">
    $B$3$s$K$A$O!#(B<br>
    <a href="http://s2chronos.sandbox.seasar.org/ja/index.html"
      target="_blank"><span class="highlight">s2chronos</span></a>$B$N%$%s%9%H!<(B
    $B%k$r;n$_$F$$$k$N$G$9$,!"(B<br>
    $BNI$$%A%e!<%H%j%"%k$N%Z!<%8$,8+$D$+$i$:!"<ALd$5$;$F$/$@$5$$!#(B<br>
    <br>
    <a class="moz-txt-link-freetext" href="http://d.hatena.ne.jp/gungnir_odin/20100421/1271856739">http://d.hatena.ne.jp/gungnir_odin/20100421/1271856739</a><br>
    $B%Z!<%8$r;29M$K!"(BSAS$B#t(Bruts$B!\(BS2JDBC$B!\(BS2Chronos$B$NAH9~$_$r;n$_$F$$$^$9!#(B<br>
    <br>
    $B"!0J2<!"<j=g$G$9!#(B<br>
    $B#1!%%W%m%8%'%/%H$r(BDolteng<a class="keyword"
      href="http://d.hatena.ne.jp/keyword/Dolteng"></a>$B$G:n@.!#(B<br>
    $B!!!!(BSAS$B#t(Bruts$B!\(BS2JDBC$B!\(BTomcat$B%W%i%0%$%s(B<br>
    <br>
    $B#2!%(Bsrc/main/webapp/WEB-INF/lib$B$K0J2<$N(Bjar$B$rDI2C!&%S%k%I%Q%9DI2C!#(B<br>
    $B!!!!(Bs2chronos-core-1.0.0.jar <br>
    $B!!!!(Bs2chronos-extension-1.0.0.jar <br>
    <br>
    $B#3!%(Bsrc/main/resources/chronosCustomize.dicon$B$rDI2C!#(B<br>
    <span class="synComment">&lt;?</span><span class="synType">xml
      version</span>=<span class="synConstant">"1.0"</span><span
      class="synType"> encoding</span>=<span class="synConstant">"UTF-8"</span><span
      class="synComment">?&gt;</span><br>
    <span class="synIdentifier">&lt;!</span><span class="synStatement">DOCTYPE</span>
    components <span class="synStatement">PUBLIC</span> <span
      class="synConstant">"-//SEASAR//DTD S2Container 2.4//EN"</span> <span
      class="synConstant"><a class="moz-txt-link-rfc2396E" href="http://www.seasar.org/dtd/components24.dtd">"http://www.seasar.org/dtd/components24.dtd"</a></span><span
      class="synIdentifier">&gt;<br>
    </span>&nbsp;<span class="synIdentifier">&lt;components&gt;</span><br>
    $B!!(B <span class="synIdentifier">&lt;component </span><span
      class="synType">name</span>=<span class="synConstant">"schedulerConfiguration"</span><span
      class="synIdentifier"> </span><span class="synType">class</span>=<span
      class="synConstant">"org.seasar.chronos.core.SchedulerConfiguration"</span><span
      class="synIdentifier">&gt;</span><br>
    $B!!!!(B <span class="synIdentifier">&lt;property </span><span
      class="synType">name</span>=<span class="synConstant">"daemon"</span><span
      class="synIdentifier">&gt;</span>true<span class="synIdentifier">&lt;/property&gt;</span>
    <span class="synIdentifier">&lt;property </span><span
      class="synType">name</span>=<span class="synConstant">"autoFinish"</span><span
      class="synIdentifier">&gt;</span>false<span class="synIdentifier">&lt;/property&gt;<br>
      $B!!!!(B </span><span class="synIdentifier">&lt;property </span><span
      class="synType">name</span>=<span class="synConstant">"autoFinishTimeLimit"</span><span
      class="synIdentifier">&gt;</span>5000L<span class="synIdentifier">&lt;/property&gt;<br>
      $B!!!!(B </span><span class="synIdentifier">&lt;property </span><span
      class="synType">name</span>=<span class="synConstant">"taskScanIntervalTime"</span><span
      class="synIdentifier">&gt;</span>30000L<span class="synIdentifier">&lt;/property&gt;<br>
    </span>$B!!!!(B <span class="synIdentifier">&lt;property </span><span
      class="synType">name</span>=<span class="synConstant">"threadPoolType"</span><span
      class="synIdentifier">&gt;</span>@org.seasar.chronos.core.ThreadPoolType@CACHED<span
      class="synIdentifier">&lt;/property&gt;<br>
      $B!!(B</span> <span class="synIdentifier">&lt;/component&gt;</span><br>
    &nbsp;<span class="synIdentifier">&lt;/components&gt;<br>
      <br>
      $B#4!%(B</span><span class="synIdentifier">src/main/resources/</span><span
      class="synIdentifier">creator.dicon$B$rJT=8!#(B</span><span
      class="synIdentifier"><span class="synIdentifier">$B!!!!!!"+DI2C(B<br>
      </span>&nbsp;&nbsp;&nbsp; &lt;component
      class="org.seasar.chronos.core.creator.TaskCreator"/&gt;<br>
      &nbsp;&nbsp;&nbsp; &lt;component
      class="org.seasar.chronos.core.creator.TriggerCreator"/&gt;</span><span
      class="synIdentifier"><span class="synIdentifier"><br>
      </span><br>
      $B#5!%(B</span><span class="synIdentifier"><span class="synIdentifier">src/main/resources/</span></span><span
      class="synIdentifier"><span class="synIdentifier">customizer</span><span
        class="synIdentifier">.dicon$B$rJT=8!#(B</span></span><span
      class="synIdentifier"><span class="synIdentifier"><span
          class="synIdentifier"><span class="synIdentifier">$B!!(B</span><span
            class="synIdentifier"><span class="synIdentifier">$B!!"+DI2C(B<br>
            </span></span></span>&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span
      class="synIdentifier"><span class="synIdentifier"><span
          class="synIdentifier">&lt;component </span><span
          class="synType">name</span>=<span class="synConstant">"taskSupportAspectCustomizer"</span><span
          class="synIdentifier"> </span><span class="synType">class</span>=<span
          class="synConstant">"org.seasar.framework.container.customizer.AspectCustomizer"</span><span
          class="synIdentifier">&gt;</span> <span class="synIdentifier">&lt;initMethod
        </span><span class="synType">name</span>=<span
          class="synConstant">"addInterceptorName"</span><span
          class="synIdentifier">&gt;</span> <span class="synIdentifier">&lt;arg&gt;</span>"aop.traceInterceptor"<span
          class="synIdentifier">&lt;/arg&gt;</span> <span
          class="synIdentifier">&lt;/initMethod&gt;</span> <span
          class="synIdentifier">&lt;property </span><span
          class="synType">name</span>=<span class="synConstant">"pointcut"</span><span
          class="synIdentifier">&gt;</span>"do.*, initialize, destroy"<span
          class="synIdentifier">&lt;/property&gt;</span>
        <span class="synIdentifier">&lt;/component&gt;</span>
        <span class="synIdentifier">&lt;component </span><span
          class="synType">name</span>=<span class="synConstant">"taskCustomizer"</span><span
          class="synIdentifier"> </span><span class="synType">class</span>=<span
          class="synConstant">"org.seasar.framework.container.customizer.CustomizerChain"</span><span
          class="synIdentifier">&gt;</span> <span class="synIdentifier">&lt;initMethod
        </span><span class="synType">name</span>=<span
          class="synConstant">"addCustomizer"</span><span
          class="synIdentifier">&gt;</span> <span class="synIdentifier">&lt;arg&gt;</span>taskSupportAspectCustomizer<span
          class="synIdentifier">&lt;/arg&gt;</span> <span
          class="synIdentifier">&lt;/initMethod&gt;</span>
        <span class="synIdentifier">&lt;/component&gt;</span>
        <span class="synIdentifier">&lt;component </span><span
          class="synType">name</span>=<span class="synConstant">"triggerSupportAspectCustomizer"</span><span
          class="synIdentifier"> </span><span class="synType">class</span>=<span
          class="synConstant">"org.seasar.framework.container.customizer.AspectCustomizer"</span><span
          class="synIdentifier">&gt;</span> <span class="synIdentifier">&lt;initMethod
        </span><span class="synType">name</span>=<span
          class="synConstant">"addInterceptorName"</span><span
          class="synIdentifier">&gt;</span> <span class="synIdentifier">&lt;arg&gt;</span>"aop.traceInterceptor"<span
          class="synIdentifier">&lt;/arg&gt;</span> <span
          class="synIdentifier">&lt;/initMethod&gt;</span> <span
          class="synIdentifier">&lt;property </span><span
          class="synType">name</span>=<span class="synConstant">"pointcut"</span><span
          class="synIdentifier">&gt;</span>".*"<span
          class="synIdentifier">&lt;/property&gt;</span>
        <span class="synIdentifier">&lt;/component&gt;</span>
        <span class="synIdentifier">&lt;component </span><span
          class="synType">name</span>=<span class="synConstant">"triggerCustomizer"</span><span
          class="synIdentifier"> </span><span class="synType">class</span>=<span
          class="synConstant">"org.seasar.framework.container.customizer.CustomizerChain"</span><span
          class="synIdentifier">&gt;</span> <span class="synIdentifier">&lt;initMethod
        </span><span class="synType">name</span>=<span
          class="synConstant">"addCustomizer"</span><span
          class="synIdentifier">&gt;</span> <span class="synIdentifier">&lt;arg&gt;</span>triggerSupportAspectCustomizer<span
          class="synIdentifier">&lt;/arg&gt;</span> <span
          class="synIdentifier">&lt;/initMethod&gt;</span>
        <span class="synIdentifier">&lt;/component&gt;</span> </span><span
        class="synIdentifier"><span class="synIdentifier"><br>
        </span></span><br>
      $B#6!%(B</span><span class="synIdentifier">src/main/resources/app.dicon$B$r(B</span><span
      class="synIdentifier"><span class="synIdentifier"><span
          class="synIdentifier">$BJT=8(B</span></span>$B!#(B<br>
      &lt;components&gt;<br>
      &nbsp; &lt;include path="convention.dicon"/&gt;<br>
      &nbsp; &lt;include path="aop.dicon"/&gt;<br>
      &nbsp; &lt;include path="j2ee.dicon"/&gt;<br>
      &nbsp; &lt;include path="s2jdbc.dicon"/&gt;<br>
      &lt;include path="chronos-extension.dicon"/&gt;</span><span
      class="synIdentifier"><span class="synIdentifier"><span
          class="synIdentifier"><span class="synIdentifier"><span
              class="synIdentifier">$B!!(B</span><span class="synIdentifier"><span
                class="synIdentifier">$B!!"+DI2C(B<br>
              </span></span></span></span></span>&nbsp; &lt;component
      name="actionMessagesThrowsInterceptor"
class="org.seasar.struts.interceptor.ActionMessagesThrowsInterceptor"/&gt;<br>
      &lt;/components&gt;<br>
      <br>
      $B#7!%(B</span>src/main/webapp/WEB-INF/web.xml$B$K0J2<$rDI2C!#(B<br>
    <span class="synIdentifier">&lt;servlet&gt;</span> <span
      class="synIdentifier">&lt;servlet-name&gt;</span>chronosServlet<span
      class="synIdentifier">&lt;/servlet-name&gt;</span> <span
      class="synIdentifier">&lt;servlet-class&gt;</span>org.seasar.chronos.extension.servlet.<span
      class="highlight">S2Chronos</span>Servlet<span
      class="synIdentifier">&lt;/servlet-class&gt;</span> <span
      class="synIdentifier">&lt;load-on-startup&gt;</span>3<span
      class="synIdentifier">&lt;/load-on-startup&gt;</span>
    <span class="synIdentifier">&lt;/servlet&gt;</span><br>
    <br>
    $B#8!%%5%s%W%k(BTask$B%/%i%9$N:n@.!#(B<br>
    <span class="synPreProc">package</span> jp.test.<span
      class="highlight">s2chronos</span>.task;<br>
    <span class="synPreProc">import</span>
    org.seasar.chronos.core.annotation.task.Task;<br>
    <span class="synPreProc">import</span>
    org.seasar.chronos.core.annotation.trigger.CronTrigger;<br>
    <span class="synPreProc">@Task</span>
    <br>
    <span class="synPreProc">@CronTrigger</span>(expression = <span
      class="synConstant">"0 */1 * * * ?"</span>)
    <span class="synType"><br>
      public</span> <span class="synType">class</span> SampleTask {<br>
    $B!!(B<span class="synType">public</span> <span class="synType">void</span>
    doExecute() {<br>
    $B!!!!(BSystem.out.println(<span class="synConstant">"CronTrigger$B$,(B1$BJ,$4$H$K<B9T$5(B
      $B$l$^$9!#(B"</span>);<br>
    $B!!(B}<br>
    }
    <br>
    <br>
    $B#9!%(BTomcat$B5/F0!#(B<br>
    <br>
    <br>
    $B"!$3$N<j=g$G<B9T$7$?>l9g!"%3%s%=!<%k$r8+$k$H3N$+$K%9%1%8%e!<%i$,5/F0$7$F$$$k$h$&$K;W$&$N$G$9$,!"(B<br>
    $B!!:n@.$7$?%5%s%W%k$N(BTask$B$,<B9T$5$l$^$;$s!#>e5-#8$N<j=g$G:n@.$7$?%/%i%9$rDj5A$7$J$$$H$$$1$J$$$N$G$7$g$&$+!)(B<br>
    $B!!2<5-$,5/F0%m%0$G$9!#(B<br>
    <br>
    INFO&nbsp; 2013-03-20 07:21:54,667 [main] Loading validation rules file
    from '/WEB-INF/validator-rules.xml'<br>
    INFO&nbsp; 2013-03-20 07:21:54,787 [main] s2-framework$B$N%P!<%8%g%s$O(B2.4.43$B$G$9!#(B<br>
    INFO&nbsp; 2013-03-20 07:21:54,787 [main] s2-extension$B$N%P!<%8%g%s$O(B2.4.43$B$G$9!#(B<br>
    INFO&nbsp; 2013-03-20 07:21:54,787 [main] s2-tiger$B$N%P!<%8%g%s$O(B2.4.43$B$G$9!#(B<br>
    DEBUG 2013-03-20 07:21:54,887 [main]
    $B4D6-JQ?t(B#Env$B$K%U%!%$%k(B(env.txt)$B$+$iCM(B(ct)$B$,@_Dj$5$l$^$7$?(B<br>
    DEBUG 2013-03-20 07:21:54,957 [main]
    S2Container$B$r:n@.$7$^$9!#(Bpath=hotdeploy.dicon<br>
    DEBUG 2013-03-20 07:21:54,967 [main]
    S2Container$B$r:n@.$7$^$9!#(Bpath=convention.dicon<br>
    DEBUG 2013-03-20 07:21:55,117 [main]
    S2Container$B$r:n@.$7$^$7$?!#(Bpath=convention.dicon<br>
    DEBUG 2013-03-20 07:21:55,117 [main]
    S2Container$B$r:n@.$7$^$9!#(Bpath=customizer.dicon<br>
    DEBUG 2013-03-20 07:21:55,127 [main]
    S2Container$B$r:n@.$7$^$9!#(Bpath=default-customizer.dicon<br>
    DEBUG 2013-03-20 07:21:55,127 [main]
    S2Container$B$r:n@.$7$^$9!#(Bpath=std-customizer.dicon<br>
    DEBUG 2013-03-20 07:21:55,137 [main]
    S2Container$B$r:n@.$7$^$9!#(Bpath=std-customizer-tiger.dicon<br>
    DEBUG 2013-03-20 07:21:55,177 [main]
    S2Container$B$r:n@.$7$^$7$?!#(Bpath=std-customizer-tiger.dicon<br>
    DEBUG 2013-03-20 07:21:55,187 [main]
    S2Container$B$r:n@.$7$^$7$?!#(Bpath=std-customizer.dicon<br>
    DEBUG 2013-03-20 07:21:55,197 [main]
    S2Container$B$r:n@.$7$^$7$?!#(Bpath=default-customizer.dicon<br>
    DEBUG 2013-03-20 07:21:55,217 [main]
    S2Container$B$r:n@.$7$^$7$?!#(Bpath=customizer.dicon<br>
    DEBUG 2013-03-20 07:21:55,217 [main]
    S2Container$B$r:n@.$7$^$9!#(Bpath=creator.dicon<br>
    DEBUG 2013-03-20 07:21:55,247 [main]
    S2Container$B$r:n@.$7$^$7$?!#(Bpath=creator.dicon<br>
    DEBUG 2013-03-20 07:21:55,247 [main]
    S2Container$B$r:n@.$7$^$7$?!#(Bpath=hotdeploy.dicon<br>
    DEBUG 2013-03-20 07:21:55,297 [main]
    S2Container$B$r:n@.$7$^$9!#(Bpath=app.dicon<br>
    DEBUG 2013-03-20 07:21:55,297 [main]
    S2Container$B$r:n@.$7$^$9!#(Bpath=convention.dicon<br>
    DEBUG 2013-03-20 07:21:55,317 [main]
    S2Container$B$r:n@.$7$^$7$?!#(Bpath=convention.dicon<br>
    DEBUG 2013-03-20 07:21:55,317 [main]
    S2Container$B$r:n@.$7$^$9!#(Bpath=aop.dicon<br>
    DEBUG 2013-03-20 07:21:55,357 [main]
    S2Container$B$r:n@.$7$^$7$?!#(Bpath=aop.dicon<br>
    DEBUG 2013-03-20 07:21:55,357 [main]
    S2Container$B$r:n@.$7$^$9!#(Bpath=j2ee.dicon<br>
    DEBUG 2013-03-20 07:21:55,357 [main]
    S2Container$B$r:n@.$7$^$9!#(Bpath=jta.dicon<br>
    DEBUG 2013-03-20 07:21:55,387 [main]
    S2Container$B$r:n@.$7$^$7$?!#(Bpath=jta.dicon<br>
    DEBUG 2013-03-20 07:21:55,387 [main]
    S2Container$B$r:n@.$7$^$9!#(Bpath=jdbc.dicon<br>
    DEBUG 2013-03-20 07:21:55,417 [main]
    S2Container$B$r:n@.$7$^$7$?!#(Bpath=jdbc.dicon<br>
    DEBUG 2013-03-20 07:21:55,417 [main]
    S2Container$B$r:n@.$7$^$7$?!#(Bpath=j2ee.dicon<br>
    DEBUG 2013-03-20 07:21:55,417 [main]
    S2Container$B$r:n@.$7$^$9!#(Bpath=s2jdbc.dicon<br>
    DEBUG 2013-03-20 07:21:55,427 [main]
    S2Container$B$r:n@.$7$^$9!#(Bpath=s2jdbc-internal.dicon<br>
    DEBUG 2013-03-20 07:21:55,437 [main]
    S2Container$B$r:n@.$7$^$7$?!#(Bpath=s2jdbc-internal.dicon<br>
    DEBUG 2013-03-20 07:21:55,497 [main]
    S2Container$B$r:n@.$7$^$7$?!#(Bpath=s2jdbc.dicon<br>
    DEBUG 2013-03-20 07:21:55,497 [main]
    S2Container$B$r:n@.$7$^$9!#(Bpath=chronos-extension.dicon<br>
    DEBUG 2013-03-20 07:21:55,497 [main]
    S2Container$B$r:n@.$7$^$9!#(Bpath=chronos-core.dicon<br>
    DEBUG 2013-03-20 07:21:55,507 [main]
    S2Container$B$r:n@.$7$^$9!#(Bpath=chronos-base.dicon<br>
    DEBUG 2013-03-20 07:21:55,518 [main]
    S2Container$B$r:n@.$7$^$9!#(Bpath=chronosCustomize.dicon<br>
    DEBUG 2013-03-20 07:21:55,518 [main]
    S2Container$B$r:n@.$7$^$7$?!#(Bpath=chronosCustomize.dicon<br>
    DEBUG 2013-03-20 07:21:55,618 [main]
    S2Container$B$r:n@.$7$^$7$?!#(Bpath=chronos-base.dicon<br>
    DEBUG 2013-03-20 07:21:55,678 [main]
    S2Container$B$r:n@.$7$^$7$?!#(Bpath=chronos-core.dicon<br>
    DEBUG 2013-03-20 07:21:55,678 [main]
    S2Container$B$r:n@.$7$^$7$?!#(Bpath=chronos-extension.dicon<br>
    DEBUG 2013-03-20 07:21:55,678 [main]
    S2Container$B$r:n@.$7$^$7$?!#(Bpath=app.dicon<br>
    DEBUG 2013-03-20 07:21:56,108 [main] BEGIN
org.seasar.chronos.core.impl.SchedulerImpl#setSchedulerConfiguration(org.seasar.chronos.core.SchedulerConfiguration@1461b5b)<br>
    DEBUG 2013-03-20 07:21:56,108 [main] END
    org.seasar.chronos.core.impl.SchedulerImpl#setSchedulerConfiguration(org.seasar.chronos.core.SchedulerConfiguration@1461b5b)
    : null<br>
    INFO&nbsp; 2013-03-20 07:21:56,118 [main] Running on [ENV]ct, [DEPLOY
    MODE]Hot Deploy<br>
    DEBUG 2013-03-20 07:21:56,128 [main] BEGIN
    org.seasar.chronos.core.impl.SchedulerImpl#start()<br>
    DEBUG 2013-03-20 07:21:56,138 [main] $B%9%1%8%e!<%i(B $B$r(B $B3+;O$7$^$9!%(B<br>
    WARN&nbsp; 2013-03-20 07:21:56,138 [main]
    $B%k!<%H%Q%C%1!<%8(B(app.task)$B$KBP1~$9$k%j%=!<%9$,%/%i%9%Q%9$+$i8+$D$+$j$^$;$s$G$7$?!#(B<br>
    DEBUG 2013-03-20 07:21:56,138 [main] $B%9%1%8%e!<%i(B $B$r(B $B3+;O$7$^$7$?!%(B<br>
    DEBUG 2013-03-20 07:21:56,138 [main] END
    org.seasar.chronos.core.impl.SchedulerImpl#start() : null<br>
    <br>
    $B$465<(D:$1$l$P9,$$$G$9!#$h$m$7$/$*4j$$CW$7$^$9!#(B<br>
  </body>
</html>