【现象】
SAStruts的Action处理抛出异常后,将无法热部署该Action类了。
并且,发生上述问题时,会因为以下LinkageError的原因而发生系统错误。
-----
java.lang.LinkageError: loader constraint violation: loader (instance of com/caucho/loader/EnvironmentClassLoader) previously initiated loading for a different type with name "jp/sample/master/entity/Table1"
at java.lang.ClassLoader.defineClass1(Native Method) [na:1.6.0_18]
-----
【条件】
在以下负责对从Aciton处理中抛出的错误进行处理的类中输出日志时将发生此现象。
* ApplicationRuntimeExceptionHandler
* SystemRuntimeExceptionHandler
上述错误处理类在status-config.xml中被指定。
【原因】
该Action类被非对象类Logger引用后,又被加载到常规的类加载器中,导致发生此现象。
【规避方法】
请在Logger配置文件中,将Action类的日志输出设置为OFF。
例如,如果不希望输出Action类中的错误,则请添加以下设置。
-------------------------
<logger name="jp.sample.action">
<level value="off" />
</logger>
-- 适用对象 --------------------------------------------------------------------
iWP/Web系统构建基础/WebPlatform/AppFramework
----------------------------------------------------------------------------------
FAQID:464
SAStruts的Action处理抛出异常后,无法热部署该Action类。