かとじゅんの技術日誌

技術の話をするところ

S2Chronos

ご紹介ありがとうございます!

非常に便利です!でもはまりました。。。 脱サラ大学生のプログラム日記で紹介していただきました。ありがとうございます。 ご存知のとおり、あまり複雑なことはできません。ちょっとしたバッチ処理で使うとよいですよ。というか、複雑なことをやるとS2Chron…

継続は力なり

とはよく言ったものですが、本業との兼ね合いで、地豆はおろか、自分のプロダクトにコミットできていません>< 継続は力なりは大事ですね。 地豆に関しても、このような自分のライフスタイルに会っていて、地豆の優先度に会うタスクを見出せないでいる。 地…

タスククラスに複数のタスクグループを定義してみる

お次はタスクグループをタスククラス内に複数定義する方法です. 以下の例ではタスククラス内に二つのタスクグループを作っています.タスクグループを指定するにはdoから始まるタスクメソッドにTaskGroupアノテーションを使ってグループ名を記述します.タ…

スレッドプールの使い方

バッチ処理を効率よく実行するには,マルチスレッド化はかかせません. ただし,ハードウェアリソースを無視してスレッドを作りすぎるのはあまり賢い方法ではありませんので,ここはスレッドプールを使いましょう.ということで,S2Chronosの内部では,Java5…

タスクとタスクグループの関係

詳しくは知りませんが,JP1にはジョブとジョブグループが存在します. ジョブ,つまりバッチ処理の最小単位ですが,ジョブグループはジョブを複数内包することができます.これをそのままクラス表現にすると,コンポジットパターンでJobGroupはJobを複数保持…

開始処理と終了処理について

退屈な説明ですが,基本的なことなんでご容赦をw 初期化処理,破棄処理に加えてタスクを実行前と実行後に呼ばれるメソッドを定義できます.startとendというメソッド名で定義してください.下記の例では,呼び出し順序が,initialize→ start → doExecute → …

初期化と破棄処理について

スレッドプール周りの話に行く前に,初期化と破棄処理のお話をしておかないとまずいw. initializeとdestroyという名のメソッドを定義してください.そうするとS2Chronosのスケジューラによって登録された後に,スケジューラがタスクを順番に検索します.そ…

S2Chronosでバッチ処理をつくってみよう

1.0.0をリリースした記念にS2Chronosの使い方を簡単に紹介していく記事を書いていきたいと思います. セットアップ セットアップ手順は http://s2chronos.sandbox.seasar.org/ja/install.html をご覧ください.サンプルのダウンロードは http://s2chronos.sa…

S2Chronos 1.0.0をリリースしました

遅くなりましてすみません.やっとこさリリースしました.initializeメソッドとdestroyメソッドが名ばかりだったのですが,今回のリリースでちゃっと動作するようにしました. これまでのinitializeとdestoryは,start, endに置き換わっていますのでご注意く…

RC5リリース

次ぐらいにRCがとれればいいのですが,,,皆様のフィードバックを受けて徐々に使えるものになってきていると感じています.ほんとにありがとうございます

0.0.1-RC4リリースしました

結構痛い不具合がでてましたが,なんとか対応しましたw あと,Teedaでのサンプルも添付しました.ご参考までに.http://s2chronos.sandbox.seasar.org/ Bugfix [CHRONOS-14] スレッドプールサイズが肥大化する [CHRONOS-13] destoryメソッドが呼ばれないと…

S2Chronos 0.0.1-RC3をリリース

CronTriggerに問題があったのですがQuartzからパーサーを移植*1しました. のため,CronTriggerの仕様がQuartz準拠になります.仕様についてはこちらをご覧ください. よろしくお願いします. *1:同じApache Licenseであるためライセンス的問題はありません

もうすぐRC2出します.

S2Chronosですが,core部分がやっと5000行超えました.なるべくコードを増やさないで実装するコンセプトだったので今のところはうまくいってる感じです(汗 んで,すみません.いろいろとコードの美しさにこだわってしまい.ちょっとリリースが遅れていますが…

頑張ってます

さっそく,MLでS2Chronosに対して初の問い合わせがきました! まだまだ,これからですが皆様のお役に立てるように頑張ります!

初リリース

いやー,大変遅くなりましたが,とりあえず0.0.1-RC1として初リリースしました.http://s2chronos.sandbox.seasar.org/ja/ドキュメントがほとんどないのですが,これから徐々にそろえていきたいと思います.

DiconConditionUtil

DiconConditionUtil.これは使える! <components namespace="teeda"> <include path="convention.dicon" condition="@org.seasar.teeda.core.util.DiconConditionUtil@hasConvention()" /> <include path="teedaErrorPage.dicon" condition="@org.seasar.teeda.core.util.DiconConditionUtil@hasErrorPageDicon()" /> </include></include></components>

S2Chronosのプロジェクトサイトを少しUpdate

http://s2chronos.sandbox.seasar.org/ja/すみません.徐々にUpdate中です.

s2chronos-extensionのコーディング 徐々に進む

深夜に集中力を切らさないように気合い注入しつつ永続化のコードを書いています. 結局のところ,S2DaoとS2Dxoの助けを借りてだいぶ楽にコーディングできます. Java5の列挙型が何も考えずに,Dxo -> Daoで直接DBに保存できるのはありがたい.もちろんその逆…

現在リファクタリング中

永続化機能の作り込みをやっていて,それに併せてリファクタリングも継続的に実施中です.まだまだ,かかりそうです. 最近,コミュニティの方と,やりとりすることが多いのですが,S2Chronosが待ち遠しいとおっしゃってくれる方に遭遇する機会が多くなって…

coreとextension,examplesにソースディレクトリを変更

s2chronos-core.jar, s2chronos-extension.jarに分けます. coreにスケジューラとしての基本機能と,extensionには永続化なのど拡張機能を含めることになるかと思います. examplesはjar化はなしでソースのみ提供ということで.ちなみに,今回気づいたのです…

SMART deployに対応

S2ChronosをSMART deployに対応しました. 具体的には,Taskクラスを ルートパッケージ名.taskに,クラス名をxxxTaskのサフィックス名で配置すると,自動的にS2Chronosのスケジューラに登録されます. SMART Deployを利用しない場合は,以下のように登録すれ…

トリガーの仕様について

タスク(ジョブをタスクに改名しました)に以下のsetter/getterを配置することで,トリガーの機能を実現することにしました. getStartTaskでtrueを返すとスケジューラから当該タスクが起動され,逆にgetEndTaskでtrueを返すと終了します. getShutdownTaskの…

MethodInvoker

org.seasar.chronos.delegate.MethodInvokerは,.NETのデリゲートのような機能を提供します. 材料は,ExecutorServiceと,S2に登録されているコンポーネントです.使い方はこんな感じ.C#ではデリゲートをよく使っていたのですが,Javaでは使えません.しか…

ジョブ関連の実装がほぼ完了

テストは不十分なのですが,ジョブ関連の実装がほぼ完了.このあとは,トリガーとジョブの関係について再度設計を入れてからまた実装に入りたいと思います.ソースはこの辺から見れます. https://www.seasar.org/svn/sandbox/s2chronos/

同期ジョブの遷移先動的指定

非同期ジョブの場合、遷移先をあらかじめアノテーションで定義しなければならないのですが、同期ジョブの場合は戻り値で遷移先を指定できるようにしました。 // ジョブメソッドA @Group("groupA") @Join(JoinType.Wait) public String doJobA() throws Excep…

Cloneアノテーション&例外のハンドリング

ちょっと思いつきですが, @Cloneで当該ジョブの複製する数を指定するとJobExecutorServiceによって複製されます。これもジョブに割り当てたスレッドプールの上限によります。複製したジョブの待機ですが@Join(JoinType.Wait)とした場合、複製したすべてのジ…

Executorを使おう

Java5からスレッドプールが利用できるようになりました。 スレッド作成の欠点 これまでのスレッドは、ThreadクラスやRunnableクラスを組み合わせ使っていました。しかし、スレッドをただ単に使うだけだと以下のような欠点があります。 スレッドを生成から破…

Triggerの仕様について

トリガーとは、ジョブを起動するための起動/停止の日時などの条件を指定するクラスのことです。 通常はGenericTriggerを継承し、@Triggerに対応するジョブクラス(複数指定可能です)、@InitMethodで初期化処理を指定します。CRONコマンド形式を利用したい場合…