S2Container-2.4.42でのS2Chronos-1.0.0の利用

S2Chronos-1.0.0を使用していた環境のS2Containerを2.4.18から2.4.42にバージョンアップしたところ、Taskが起動しなくなってしまった。
Eclipse上でデバッグしてみたところ、s2chronos-coreに含まれるTaskExecuteStrategyImpl#load()の495行目、

			Object value = pd.getValue(this.task);

で例外が発生し、スケジューラスレッドが終了してしまう。
なぜかと思い調べてみると、どうやら、S2Containerに含まれるPropertyDescImpl#getValue()の動作が変更されているようだ。
2.4.18のときはsetterのみが定義されたフィールドであってもgetValue()が値を返していたが、2.4.42では例外が発生するようになっている。(同メソッドのjavadocは変更されていないので、2.4.18から2.4.42までの間に、正しい動作に修正された、ということらしい。)
事実、問題と思われるフィールドのgetterを実装したところ、正しくTaskが起動された。
ということは、Taskが使用するS2Container上のコンポーネントや、S2Chronosのドキュメントにあるexceptionフィールドに対して、getterを定義する必要がある。
このためだけにgetterを定義するのは微妙なので、なんとか回避する方法を模索してみた。
このTaskExecuteStrategyImpl#load()だが、デバッグしてみると処理のほとんどがスキップされるし、問題の例外発生部分についても、ローカル変数にPropertyDescImpl#getValue()の値を格納して終わっているので、実行されなくても問題がないように思われた。
そこで、思い切ってload()メソッドの動作をスキップしようと思い、TaskExecuteStrategyImplを継承したクラスを作成し、load()メソッドをオーバーライドして空実装とし、s2chronos-core.diconでそのクラスを使うように修正。
その結果、多少強引な手ではあるが、動作するようになった。


うーーん、ググっても全然引っかからないし、皆困ってないんだろうか?
ていうか、問題が起こった環境自体、2.3から移行した関係で設定の仕方とか2.4風でなかったりするので、その辺が原因なのかも。
なんか根本的に間違ってる予感がしてきたので、S2Containerのドキュメントを一から読みながら環境を見直してみるか。