Seaserのホットデプロイは 実行時に特定箇所でクラスローダを毎回新しくするというシンプルなものです。 結構、割り切った作りになっているなぁというのが感想ですが、そのシンプルさと原理からいろいろと制限事項も生まれてしまう。 今回、私がハマったところはフレームワーク内でリフレクションをする際に、クラスローダの違いからClassCastExceptionを出したり、NoSuchMethodExceptionを出したりしたことでした。 クラスローダの基礎知識 まず、基礎知識としてクラスローダが違う場合、同じClassでも代入互換性がありません。Classの同一性は、Class自身とそのクラスローダによって定められます。 次に、クラスローダは階層構造をなしていて、まず親クラスローダにロード処理が移譲されます。 ClassLoader ClassLoader クラスは、委譲モデルを使ってクラスとリ