<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META http-equiv=Content-Type content="text/html; charset=utf-8">
<META content="MSHTML 6.00.2800.1615" name=GENERATOR></HEAD>
<BODY>
<DIV><FONT face="MS Pゴシック" size=2>お世話になっております。<BR>小椋と申します。<BR></FONT></DIV>
<DIV><FONT face="MS Pゴシック" size=2>加藤さん</FONT></DIV>
<DIV><FONT face="MS Pゴシック" size=2>さっそくの回答、ありがとうございます。</FONT></DIV>
<DIV><FONT face="MS Pゴシック" size=2></FONT>&nbsp;</DIV>
<DIV><FONT size=2><FONT face="MS Pゴシック">CCronTriggerを継承して<SPAN 
class=921571705-30102008>startTaskをオーバーライドする方向でやります。</SPAN></FONT></FONT></DIV>
<DIV><FONT face="MS Pゴシック" size=2></FONT>&nbsp;</DIV>
<DIV><FONT face="MS Pゴシック"><FONT size=2>現在、Linuxの<SPAN 
class=921571705-30102008>crontabで動かしているのをS2Chronosで動作するように移行中です。</SPAN></FONT></FONT></DIV>
<DIV><FONT face="MS Pゴシック"><FONT size=2><SPAN 
class=921571705-30102008>大変助かっております。</SPAN></FONT></FONT></DIV>
<DIV><FONT face="MS Pゴシック" size=2></FONT>&nbsp;</DIV>
<DIV><FONT face="MS Pゴシック" size=2>ありがごうございました。</FONT></DIV>
<DIV><FONT face="MS Pゴシック" size=2></FONT>&nbsp;</DIV>
<BLOCKQUOTE 
style="PADDING-LEFT: 5px; MARGIN-LEFT: 5px; BORDER-LEFT: #0000ff 2px solid">
  <DIV class=OutlookMessageHeader dir=ltr align=left><FONT face=Tahoma 
  size=2>-----Original Message-----<BR><B>From:</B> 
  seasar-user-bounces@ml.seasar.org 
  [mailto:seasar-user-bounces@ml.seasar.org]<B>On Behalf Of </B>Junichi 
  Kato<BR><B>Sent:</B> Thursday, October 30, 2008 2:08 PM<BR><B>To:</B> 
  seasar-user@ml.seasar.org<BR><B>Subject:</B> [Seasar-user:16185] 
  Re:【S2Chronos】CronTriggerを安全に停止する方法について<BR><BR></FONT></DIV>小椋さん、<BR>加藤です。<BR><BR>お世話になります。<BR><BR>
  <DIV class=gmail_quote>2008/10/30 11:41 Satoru Ogura <SPAN dir=ltr>&lt;<A 
  href="mailto:ogura@sanotec.co.jp" 
  target=_blank>ogura@sanotec.co.jp</A>&gt;</SPAN>:<BR>
  <BLOCKQUOTE class=gmail_quote 
  style="PADDING-LEFT: 1ex; MARGIN: 0pt 0pt 0pt 0.8ex; BORDER-LEFT: rgb(204,204,204) 1px solid">お世話になっております。<BR>小椋と申します。<BR><BR>現在、CronTriggerを5分おきに実行しております。<BR>システムのメンテナンス等で計画停止する場合に確実にタスクが<BR>実行されていない状態で停止したいと思っております。<BR><BR>setEndTask(true)で次の実行を行わないようにしようとしましたが、<BR>CCronTriggerにはsetEndTaskが実装されていないため、停止できません。<BR>setEndTaskをオーバーライドして実装しても問題ないのでしょうか?<BR>どのような方法が推奨される方法でしょうか?&nbsp;</BLOCKQUOTE>
  <DIV><FONT face="MS Pゴシック" color=#0000ff size=2></FONT><FONT face="MS Pゴシック" 
  color=#0000ff size=2></FONT><FONT face="MS Pゴシック" color=#0000ff 
  size=2></FONT><BR><BR>endTaskプロパティは、doから始まるタスクメソッドが複数あり、そのタスクを遷移する間に実行中の当該タスクメソッドの終了を待ってから終了する場合に使います。つまり、実行中のタスクメソッドは実行し、後続のタスクメソッドは実行されません。<BR><BR>また、shudownTaskプロパティをtrueした場合は、タスクメソッドのスレッドにInterruptedExceptionを発生させます。タスクメソッドでInterruptedExceptionを適切に処理していれば、即座にタスクを終了できます。スケジューリングの対象からも外れますので再度実行されることはありません。doExecuteひとつののみでしたら、endTaskは意味をなさないでので、shutdownTaskのほうがよいと思います。<BR>ちなみに、Scheulder#shutdownメソッドは登録されているすべてのタスクをシャットダウンします。<BR><BR>割り込みによるタスクの中断を採用できない場合は、startTaskプロパティをオーバーライドしてfalseを返すようにすればタスクメソッドは実行されません。その上で、シャットダウンを実行すればよいと思います。<BR><BR>よろしくお願いします。<BR><BR><BR>&nbsp;</DIV>
  <BLOCKQUOTE class=gmail_quote 
  style="PADDING-LEFT: 1ex; MARGIN: 0pt 0pt 0pt 0.8ex; BORDER-LEFT: rgb(204,204,204) 1px solid"><FONT 
    face="MS Pゴシック" color=#0000ff size=2></FONT><FONT face="MS Pゴシック" 
    color=#0000ff 
    size=2></FONT><BR><BR>以下、テストで使用したソースです。<BR>タスククラス<BR>@Task<BR>public class 
    TestTask {<BR><BR>&nbsp; &nbsp;private TriggerChain trigger = new 
    TriggerChain();<BR><BR>&nbsp; &nbsp;public TaskTrigger getTrigger() 
    {<BR>&nbsp; &nbsp; &nbsp; &nbsp;return trigger;<BR>&nbsp; 
    &nbsp;}<BR><BR>&nbsp; &nbsp;// 初期化<BR>&nbsp; &nbsp;public void initialize() 
    {<BR>&nbsp; &nbsp; &nbsp; &nbsp;CCronTrigger cron = new 
    CCronTrigger();<BR>&nbsp; &nbsp; &nbsp; &nbsp;cron.setExpression("0 */1 * * 
    * ?");<BR>&nbsp; &nbsp; &nbsp; &nbsp;trigger.addTrigger(cron);<BR>&nbsp; 
    &nbsp;}<BR><BR>&nbsp; &nbsp;// タスク処理<BR>&nbsp; &nbsp;public void doExecute() 
    throws Exception {<BR>&nbsp; &nbsp;}<BR>}<BR><BR>タスクを停止しようとしているクラス<BR>public 
    class SchedulerServiceImpl implements SchedulerService {<BR><BR>&nbsp; 
    &nbsp;public TestTask testTask;<BR><BR>&nbsp; &nbsp;public void end() throws 
    Exception {<BR>&nbsp; &nbsp; &nbsp; 
    &nbsp;testTask.getTrigger().setEndTask(true);<BR>&nbsp; 
    &nbsp;}<BR>}<BR><BR>以上、よろしくお願い致します。<BR><BR><BR>_______________________________________________<BR>Seasar-user 
    mailing list<BR><A href="mailto:Seasar-user@ml.seasar.org" 
    target=_blank>Seasar-user@ml.seasar.org</A><BR><A 
    href="https://ml.seasar.org/mailman/listinfo/seasar-user" 
    target=_blank>https://ml.seasar.org/mailman/listinfo/seasar-user</A><BR></BLOCKQUOTE></DIV><BR><BR 
  clear=all><BR>-- <BR>/**<BR>* name &nbsp;: Junichi Kato<BR>* email : <A 
  href="mailto:j5ik2o@gmail.com" target=_blank>j5ik2o@gmail.com</A><BR>*<BR>* 
  blog &nbsp;: <A href="http://d.hatena.ne.jp/j5ik2o/" 
  target=_blank>http://d.hatena.ne.jp/j5ik2o/</A><BR>*<BR>* commiting projects 
  :<BR>* <A href="http://jiemamy.org/" 
  target=_blank>http://jiemamy.org/</A><BR>* <A 
  href="http://s2chronos.sandbox.seasar.org/" 
  target=_blank>http://s2chronos.sandbox.seasar.org/</A><BR>* <A 
  href="http://s2config.sandbox.seasar.org/" 
  target=_blank>http://s2config.sandbox.seasar.org/</A><BR>*/<BR></BLOCKQUOTE></BODY></HTML>