SAStrutsのアクション処理で例外スローされたあとにそのアクションクラスがホットデプロイできません。

【現象】
SAStrutsのアクション処理で例外スローされたあとにそのアクションクラスがホットデプロイできなくなります。
また上記が発生すると、以下の 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]
-----

【条件】
本事象は、Action処理内からスローされたエラー処理を行う以下のクラスにおいて、ログ出力が行われた場合に発生します。

* ApplicationRuntimeExceptionHandler
* SystemRuntimeExceptionHandler
上記エラー処理クラスは、status-config.xmlで指定されています。

【原因】
そのActionクラスが非対象クラスであるロガーから参照されて通常のクラスローダにロードされてしまい、発生します。

【回避方法】
ロガー設定ファイルでActionクラスに対してログ出力OFFにしてください。
たとえば、アクションクラスでのエラーを
出力しないようにするには、以下の設定を
追加してください。

-------------------------
<logger name="jp.sample.action">
<level value="off" />
</logger>

-- 対象 ------------------------------------------------------------------------
iWP/Webシステム構築基盤
--------------------------------------------------------------------------------

FAQID:464
この記事は役に立ちましたか?
0人中0人がこの記事が役に立ったと言っています
Powered by Zendesk