[Seasar-user:5896] Re: [Teeda]ThrowsInterceptorでthrowした例外が初回はcatchできない(hotdeploy)
Asarima
[E-MAIL ADDRESS DELETED]
2007年 1月 25日 (木) 19:10:31 JST
Asarimaです。
>HOT deploy は HotClassLoader というクラスローダーを
>リクエストごとに作り,そのたびに新たにクラスを
>ロードし直すという方法で実現しています.
>(後略)
小林さん、いつもお世話になっております。
クラスローダの状態がイメージできて、概ね理解できたと思います。
どうもありがとうございます。
今、以下のように記述しているのですが、ルートパッケージをhogeとして
hoge.interceptorに置いていますので、定義しなくても動作するか確認して
報告します。
[OracleSQLExceptionThrowsInterceptor]
public void handleThrowable(SQLRuntimeException ex,
MethodInvocation invocation) throws Throwable {
SQLException cause = (SQLException)ex.getCause();
SQLUniqueConstraintException.handle(cause);
}
[SQLUniqueConstraintException]
public static void handle(SQLException cause) {
if ("23000".equals(cause.getSQLState())) {
if (1 == cause.getErrorCode()) {
throw new SQLUniqueConstraintException(cause);
}
}
[app_aop.dicon]
<component name="oracleSQLExceptionThrowsInterceptor"
class="hoge.interceptor.OracleSQLExceptionThrowsInterceptor"/>
[customizer.dicon]
<component name="oracleCustomizer"
class="org.seasar.framework.container.customizer.AspectCustomizer">
<property name="interceptorName">
"app_aop.oracleSQLExceptionThrowsInterceptor"
</property>
</component>
<component name="daoCustomizer"
class="org.seasar.framework.container.customizer.CustomizerChain">
<initMethod name="addCustomizer">
<arg>oracleCustomizer</arg>
</initMethod>
<initMethod name="addCustomizer">
<arg>defaultCustomizer</arg>
</initMethod>
<initMethod name="addCustomizer">
<arg>daoSupportAspectCustomizer</arg>
</initMethod>
</component>
Seasar-user メーリングリストの案内