読者です 読者をやめる 読者になる 読者になる

slim3のHotReloadingでエラーが発生した(2)

slim3のHotReloadingでエラーが発生した - あおうさ@日記の続き。
現象がなんとなくわかりました。HOT reloadableではないパッケージのクラスからHOT reloadableなクラスをnewしようとするとエラーが発生するようです。

パッケージ

  • study.app
  • study.app.cool
  • study.slim3wrapper

web.xml

  <context-param>
    <param-name>slim3.rootPackage</param-name>
    <param-value>study.app</param-value>
  </context-param>

上記の構成で

study.slim3wrapperのパッケージのクラスからHOT reloadableなクラスであるstudy.app配下のmodelパッケージのクラスをnewしていたのが問題でした。

slim3のHOT reloadingに関する制約

MLで次のように記載されています。

Singleton、ServletのFilter、ContextListenerなどは、
root.coolパッケージ配下に置くようにしてください。
root.cool.service, root.cool.servlet ...

HOT reloadableなクラスは、coolなクラスにアクセスできますが、
coolなクラスは、HOT reloadableなクラスにアクセスすることはできません。

HOT reloadingに関する制約はこれだけです。

ばっちり太字のところにひっかかってました。私のミスです。
package構成を見ればわかるとおりstudy.slim3wrapperがappのpackageに依存している時点でpackage構成がおかしいのです。それを修正して解決しました。
 
解決したのはいいのですが、新しい疑問が出てきました。この構成の場合に下記packageで違いはなにかあるのでしょうか。

  • study.app.cool
  • study.slim3wrapper

特に違いがないとしたら、「Singleton、ServletのFilter、ContextListenerなどをstudy.app配下のパッケージで作成したい場合にはcoolパッケージに入れなさい。」ということでなのでしょうか。study.app配下ではない場合はcoolというパッケージ名をつけなくても同様の動作になる?