<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><meta content="text/html;charset=UTF-8" http-equiv="Content-Type"></head><body ><div style='font-size:10pt;font-family:Verdana,Arial,Helvetica,sans-serif;'>お世話になっております。新田と申します。<br><br>現在、SAStruts, Doma環境下でS2Chronosを使用し、WEBアプリにて<br>タスク処理を実装しております。<br><br>CCronTriggerでタスクを起動していますが、起動時間に必ずスレッドが2回起動してしまい、<br>タスク処理が2度実行される現象が起きています。<br><br>TestTaskA、TestTaskBを<br>TestTaskA=0 10/10 * * * ?<br>TestTaskB=0 10/15 * * * ?<br>と指定して実行した場合のログです。(その他のCROND表現に変えても同じ現象が発生します)<br><br>[2013/10/30 08:20:01][DEBUG][chronos-pool-1-daemonthread-1][AbstractScheduleExecuteHandler] jp.test.task.testATask<br>[2013/10/30 08:20:01][DEBUG][chronos-pool-1-daemonthread-2][AbstractScheduleExecuteHandler] jp.test.task.testATask<br>[2013/10/30 08:20:01][DEBUG][chronos-pool-3-thread-2][TraceInterceptor] BEGIN jp.test.task.testATask#doExecute()<br>[2013/10/30 08:20:01][DEBUG][chronos-pool-3-thread-2][TransactionImpl] Transaction began, tx=[FormatId=4360, GlobalId=1383088416889/3, BranchId=]<br>[2013/10/30 08:20:01][INFO ][chronos-pool-3-thread-2][testATask] [[testATask$$EnhancedByS2AOP$$1a3a2a52:doExecute]]<br>[2013/10/30 08:20:01][DEBUG][chronos-pool-1-daemonthread-1][AbstractScheduleExecuteHandler] jp.test.task.testATask<br>[2013/10/30 08:20:01][DEBUG][chronos-pool-1-daemonthread-2][AbstractScheduleExecuteHandler] jp.test.task.testATask<br>[2013/10/30 08:20:01][DEBUG][chronos-pool-3-thread-2][TraceInterceptor] BEGIN jp.test.task.testATask#doExecute()<br>[2013/10/30 08:20:01][DEBUG][chronos-pool-3-thread-2][TransactionImpl] Transaction began, tx=[FormatId=4360, GlobalId=1383088471177/3, BranchId=]<br>[2013/10/30 08:20:01][INFO ][chronos-pool-3-thread-2][testATask] [[testATask$$EnhancedByS2AOP$$ad021c3:doExecute]]<br>[2013/10/30 08:20:03][DEBUG][chronos-pool-3-thread-2][TraceInterceptor] END jp.test.task.testATask#doExecute() : null<br>[2013/10/30 08:20:03][DEBUG][chronos-pool-3-thread-2][TransactionImpl] Transaction committed, tx=[FormatId=4360, GlobalId=1383088471177/3, BranchId=]<br>[2013/10/30 08:20:03][DEBUG][chronos-pool-3-thread-2][TraceInterceptor] END jp.test.task.testATask#doExecute() : null<br>[2013/10/30 08:20:03][INFO ][chronos-pool-3-thread-2][testATask] [[testATask$$EnhancedByS2AOP$$ad021c3:end]]<br>[2013/10/30 08:20:03][DEBUG][chronos-pool-1-daemonthread-2][AbstractScheduleExecuteHandler] jp.test.task.testATask<br>[2013/10/30 08:20:03][DEBUG][chronos-pool-1-daemonthread-2][AbstractScheduleExecuteHandler] jp.test.task.testATask<br><br><br>[2013/10/30 08:25:01][DEBUG][chronos-pool-1-daemonthread-1][AbstractScheduleExecuteHandler] jp.test.task.testBTask<br>[2013/10/30 08:25:01][DEBUG][chronos-pool-1-daemonthread-3][AbstractScheduleExecuteHandler] jp.test.task.testBTask<br>[2013/10/30 08:25:01][INFO ][chronos-pool-5-thread-2][testBTask] [[testBTask$$EnhancedByS2AOP$$334362d9:start]]<br>[2013/10/30 08:25:01][DEBUG][chronos-pool-5-thread-3][TraceInterceptor] BEGIN jp.test.task.testBTask#doExecute()<br>[2013/10/30 08:25:01][DEBUG][chronos-pool-5-thread-3][TransactionImpl] Transaction began, tx=[FormatId=4360, GlobalId=1383088416889/4, BranchId=]<br>[2013/10/30 08:25:01][INFO ][chronos-pool-5-thread-3][testBTask] [[testBTask$$EnhancedByS2AOP$$334362d9:doExecute]]<br>[2013/10/30 08:25:01][DEBUG][chronos-pool-5-thread-3][ConnectionPoolImpl] Logical connection got, tx=[FormatId=4360, GlobalId=1383088416889/4, BranchId=]<br>[2013/10/30 08:25:01][DEBUG][chronos-pool-5-thread-3][ConnectionWrapperImpl] Logical connection closed, tx=[FormatId=4360, GlobalId=1383088416889/4, BranchId=]<br>[2013/10/30 08:25:01][INFO ][chronos-pool-5-thread-3][testBTask] [[testBTask$$EnhancedByS2AOP$$334362d9:doSendMail]]<br>[2013/10/30 08:25:01][DEBUG][chronos-pool-5-thread-3][TransactionImpl] Transaction committed, tx=[FormatId=4360, GlobalId=1383088416889/4, BranchId=]<br>[2013/10/30 08:25:01][DEBUG][chronos-pool-5-thread-3][TraceInterceptor] END jp.test.task.testBTask#doExecute() : null<br>[2013/10/30 08:25:01][INFO ][chronos-pool-5-thread-3][testBTask] [[testBTask$$EnhancedByS2AOP$$334362d9:end]]<br>[2013/10/30 08:25:01][DEBUG][chronos-pool-1-daemonthread-3][AbstractScheduleExecuteHandler] jp.test.task.testBTask<br>[2013/10/30 08:25:01][DEBUG][chronos-pool-1-daemonthread-3][AbstractScheduleExecuteHandler] jp.test.task.testBTask<br>[2013/10/30 08:25:01][DEBUG][chronos-pool-1-daemonthread-1][AbstractScheduleExecuteHandler] jp.test.task.testBTask<br>[2013/10/30 08:25:01][DEBUG][chronos-pool-1-daemonthread-3][AbstractScheduleExecuteHandler] jp.test.task.testBTask<br>[2013/10/30 08:25:01][INFO ][chronos-pool-5-thread-2][testBTask] [[testBTask$$EnhancedByS2AOP$$7c8a5ff0:start]]<br>[2013/10/30 08:25:01][DEBUG][chronos-pool-5-thread-3][TraceInterceptor] BEGIN jp.test.task.testBTask#doExecute()<br>[2013/10/30 08:25:01][DEBUG][chronos-pool-5-thread-3][TransactionImpl] Transaction began, tx=[FormatId=4360, GlobalId=1383088471177/4, BranchId=]<br>[2013/10/30 08:25:01][INFO ][chronos-pool-5-thread-3][testBTask] [[testBTask$$EnhancedByS2AOP$$7c8a5ff0:doExecute]]<br>[2013/10/30 08:25:01][DEBUG][chronos-pool-5-thread-3][ConnectionPoolImpl] Logical connection got, tx=[FormatId=4360, GlobalId=1383088471177/4, BranchId=]<br>[2013/10/30 08:25:01][DEBUG][chronos-pool-5-thread-3][ConnectionWrapperImpl] Logical connection closed, tx=[FormatId=4360, GlobalId=1383088471177/4, BranchId=]<br>[2013/10/30 08:25:01][INFO ][chronos-pool-5-thread-3][testBTask] [[ SystemTask DueDate OrderTask.size() BBBBBBBBBBBBBBBBBB=2]]<br>[2013/10/30 08:25:01][INFO ][chronos-pool-5-thread-3][testBTask] [[testBTask$$EnhancedByS2AOP$$7c8a5ff0:doSendMail]]<br>[2013/10/30 08:25:01][DEBUG][chronos-pool-5-thread-3][TransactionImpl] Transaction committed, tx=[FormatId=4360, GlobalId=1383088471177/4, BranchId=]<br>[2013/10/30 08:25:01][DEBUG][chronos-pool-5-thread-3][TraceInterceptor] END jp.test.task.testBTask#doExecute() : null<br>[2013/10/30 08:25:01][INFO ][chronos-pool-5-thread-3][testBTask] [[testBTask$$EnhancedByS2AOP$$7c8a5ff0:end]]<br>[2013/10/30 08:25:01][DEBUG][chronos-pool-1-daemonthread-3][AbstractScheduleExecuteHandler] jp.test.task.testBTask<br>[2013/10/30 08:25:01][DEBUG][chronos-pool-1-daemonthread-3][AbstractScheduleExecuteHandler] jp.test.task.testBTask<br><br><br>実装はCCronTriggerをメンバ化している以外はexampleとほぼ同じです。<br>private String cronStr =testUtil.getS2ChronosProperty("s2crronProperties");<br>private CCronTrigger trigger =new CCronTrigger(cronStr);<br><br>原因、対処法が分からず困っております。<br>ご教示いただければ幸いです。<br>どうぞよろしくお願いします。<br><br><pre>以下環境です。 -------------------------------- ■S2ファミリー s2chronos-core-1.0.2 s2chronos-extension-1.0.2<br>sa-struts-1.0.4-sp9<br>s2-doma-1.28.0<br>s2-framework-2.4.45 s2-extension-2.4.45 s2-dao-1.0.51<br>s2-tiger-2.4.45<br> ■DB MySQL 5.6.13</pre><br><pre>以下設定です。 -------------------------------- ■chronosCustomize.dicon<br>&lt;?xml version="1.0" encoding="UTF-8"?&gt;<br>&lt;!DOCTYPE components PUBLIC "-//SEASAR//DTD S2Container 2.4//EN"<br>        "http://www.seasar.org/dtd/components24.dtd"&gt;<br>&lt;components&gt;<br>        &lt;component name="schedulerConfiguration" class="org.seasar.chronos.core.SchedulerConfiguration"&gt;<br>                &lt;property name="daemon"&gt;true&lt;/property&gt;        <br>                &lt;property name="hotdeployDisable"&gt;true&lt;/property&gt;<br>                &lt;property name="autoFinish"&gt;true&lt;/property&gt;<br>                &lt;property name="autoFinishTimeLimit"&gt;5000L&lt;/property&gt;<br>                &lt;property name="taskScanIntervalTime"&gt;2000L&lt;/property&gt;<br>                &lt;property name="threadPoolType"&gt;@org.seasar.chronos.core.ThreadPoolType@CACHED&lt;/property&gt;<br>        &lt;/component&gt;<br>&lt;/components&gt;<br></pre></div></body></html>