[Seasar-user:17850] Re: [SAStruts]インターセプター(Interceptor)中でのDBアクセスの実装方法について
Koichi Kobayashi
[E-MAIL ADDRESS DELETED]
2009年 6月 25日 (木) 12:30:15 JST
小林 (koichik) です.
Date: 25 Jun 2009 06:51:13 +0900
From: [E-MAIL ADDRESS DELETED]
To: [E-MAIL ADDRESS DELETED]
Subject: [Seasar-user:17849] [SAStruts]インターセプター(Interceptor)中でのDBアクセスの実装方法について
> SAStrutsにてシステムメンテナンス中等のチェックを行うため、
> インターセプター(Interceptor)中でのDBアクセスを検討しております。
(略)
> javax.servlet.ServletException: org.seasar.framework.exception.SIllegalArgumentException: [E
> SSR0094]IllegalArgumentExceptionがクラス(sample.sastruts.aop.entity.Employee)[WebappClassLoa
> der
> delegate: false
> repositories:
> /WEB-INF/classes/
> ----------> Parent Classloader:
> [E-MAIL ADDRESS DELETED]
> ]の型(java.lang.Integer)[null]のフィールド(id)に型(java.lang.Integer)[null]の値(1,010)を設定
> するときに発生しました。対象のクラスは(sample.sastruts.aop.entity.Employee)[org.seasar.frame
> [E-MAIL ADDRESS DELETED]]です。
HOT deploy 非対象クラス (Interceptor) が
HOT deploy 対象クラス (Employee) を参照すると
よく発生する現象です.
回避策としては,Interceptor が HOT deploy 対象と
なるようにするのが一つ.
現在は Interceptor を dicon に定義していると
思うのですが,プロパティになにか明示的な設定を
しなければならないなどの理由がなければ dicon に
定義するのをやめてください.
Interceptor が <root>.interceptor パッケージで
あれば,SMART deploy によって自動登録されるので,
dicon に定義する必要はありません.
Interceptor のプロパティになにか明示的な設定を
する必要がある場合は dicon に定義せざるを
得ないので,Interceptor を HOT deploy 対象に
することはできません.
その場合は,Interceptor が参照する Employee なども
HOT deploy 非対象にする必要があります.
--
<component name="koichik">
<property name="fullName">"Koichi Kobayashi"</property>
<property name="email">"[E-MAIL ADDRESS DELETED]"</property>
<property name="blog">"http://d.hatena.ne.jp/koichik"</property>
</component>
Seasar-user メーリングリストの案内