問題を絞り込めてきました。
やっぱり、SAStrutsにBTraceが刺さらない問題の原因は
HSQLDB云々ではなく、BTraceが生成するクラスのようです。
Listのaddをフックしてみるシンプルなスクリプトを書きました。
import static com.sun.btrace.BTraceUtils.*; import com.sun.btrace.*; import com.sun.btrace.annotations.*; @BTrace public class Test { @OnMethod(clazz = "+java.util.List", method = "add") public static void onAdd(AnyType[] args) { println(args[1]); } }
これをSASturtsが動いているTomcatに刺してみると
やっぱりClassFormatErrorが発生します。
もちろん、dumpされたArrayList.classをClassLoadすると
同様にClassFormatErrorが発生します。
だから、Hot DeployのためにClassLoadすると、
ClassFormatErrorが発生するのです。
昨日と結論(仮説)は代わりませんが、
少し現象がシンプルになりました。