もう、だいぶ前の話ですが、CotoGoto(コトゴト)の開発を続けていく上で、Seasar2のサポートが2016年9月26日を以って終了。その移行先を求めて、以下の対応をとりました。

移行前 移行後
Controller Struts2 Struts2
DI Seasar2 Google guice
DAO S2Dao Doma2

Controller

Controllerとして使っていた、Struts2はもともと変更する必要が無かったので、そのまま移行。
Seasar2のファミリーではなく、Struts2を利用していたので、ここだけは正直負担が軽減された。

DI

DIの部分をフルスタックフレームワークに置き換えるかという選択肢もあったが、Springを使うにしても学習コストが高くなるため、マイクロサービス化していく方針にする。
Seasarもそうだが、フルスタックフレームワークは、バージョンアップ時の変更対応が全体に及ぶ危険性もありますからね。

DAO

Daoの部分が案外一番、置き換えの余波が大きくなるため、Seasar2の中でもEOLにならなかった。
S2Daoのスタイル(DAOパターンや2 Way SQL)を踏襲しているDoma2を利用する。
おかげでSQLファイルをある程度そのまま移行できたので、作り直しは発生せずにうまくできた。

その他

その他の部分でS2Dxoをモデルマッパーとして使ってたので、こちらも置き換えが発生。
Apache Commons BeanUtilsを使ってEntityとDtoの変換をしてみると、Doma2ではjava.time.LocalDateTimeが使われていて、今まではjava.sql.Timestampを使っていたため、変換エラーが多発。
この変換部分を自作で対応したりする必要がありました。null変換も対応したり。

最後に

seasar2の移行先ということで、世間的にはSpringに移行する流れが主流な気もしますが、それ以外の移行パターンもあったりするので、ご参考になればと思います。