WSSR0015 HOT deploy対象クラス({0})が非対象クラスから参照されて通常のクラスローダにロードされています。ってどこから?

grep!grep! ソースコードの全体で(ホットデプロイパッケージ名 com.example.web)で検索して、com.example.web以外から使われている場所を見つけ出す。javaだけじゃなくてxml,jsp,properties,diconも見逃すな!

それでも見つからない場合、tomcatならソースをダウンロードしてtomcatにアタッチして、org.apache.catalina.loader.WebappClassLoader の loadClass(String name, boolean resolve) にブレイクポイントを仕掛けて条件式


name.startsWith("com.example.web")&&!name.endsWith("BeanInfo")
をつける(BeanInfo のサフィックスjsp/beanutilからよく調べられるので検出ノイズになるから)
ここで止まったら親をたどって原因っぽい場所を見つけよう。

ちなみに今回はまった原因は org.seasar.framework.util.SerializeUtil.serialize() にホットデプロイ対象クラスを含むオブジェクトを渡したからでした……