HotDeployが効かなくなると思うとき{Dxo編}


Teedaをつかっていて
/view/mainte/book/BookSearchDto
/view/mainte/book/BookSearchDxo
/view/mainte/book/SearchAction
/view/mainte/book/SearchPage
と配置して、検索一覧画面を動かしていました。
表示列をもう一つ追加したくなったのでBookSearchDtoにPropertyを追加しました。
(あとSearchPageにも同様に追加)
それまで順調にHotDeployが効いていたのですが、反映されません。
それはいいとして。。。
今度はDxoの呼び出しをコメントアウトし、自前でEntityからDTOに詰め替えました。
したら、NoSuchMethodErrorが発生。
Tomcatを再起動したら、自前でもDxoでもどっちでもうまく動作しました(反映された)。

んで、なるほどーと
DxoはReflectionだから、Methodが発見できないだけで例外にはならない。
自前で詰め替えは明示的にMethodを呼び出してしまうのでNoSuchMethodError。

例外にならないということがネックでDEBUGを続けてしまって、
Tomcatを再起動したら「なんだうまくいってたんじゃん」ということがよくあるかと思います。
開発者は「HotDeployが効かないな〜」と思ったらすぐにTomcat再起動を心がける。
というか聞いてみたらみんなそうみたいです。おかしいと思ったら再起動。
反映されてないことをBUGだと思ってそのままDEBUGし続けてしまう開発者がいたら、
Tomcat再起動を促してください。意外なHotDeploy利用時の注意点。

ちなみに上記のように、いきなりColumnを追加するようなパターンは、
外部設計がちゃんと出来てれば実際にはあり得ないとは思います。