<!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> </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> </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> </DIV>
<DIV><FONT face="MS Pゴシック" size=2>ありがごうございました。</FONT></DIV>
<DIV><FONT face="MS Pゴシック" size=2></FONT> </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><<A
href="mailto:ogura@sanotec.co.jp"
target=_blank>ogura@sanotec.co.jp</A>></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>どのような方法が推奨される方法でしょうか? </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> </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> private TriggerChain trigger = new
TriggerChain();<BR><BR> public TaskTrigger getTrigger()
{<BR> return trigger;<BR>
}<BR><BR> // 初期化<BR> public void initialize()
{<BR> CCronTrigger cron = new
CCronTrigger();<BR> cron.setExpression("0 */1 * *
* ?");<BR> trigger.addTrigger(cron);<BR>
}<BR><BR> // タスク処理<BR> public void doExecute()
throws Exception {<BR> }<BR>}<BR><BR>タスクを停止しようとしているクラス<BR>public
class SchedulerServiceImpl implements SchedulerService {<BR><BR>
public TestTask testTask;<BR><BR> public void end() throws
Exception {<BR>
testTask.getTrigger().setEndTask(true);<BR>
}<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 : Junichi Kato<BR>* email : <A
href="mailto:j5ik2o@gmail.com" target=_blank>j5ik2o@gmail.com</A><BR>*<BR>*
blog : <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>