[Seasar-user:17372] Re: @InvalidateSessionで例外が発生
黒瀬健二
[E-MAIL ADDRESS DELETED]
2009年 5月 2日 (土) 07:57:50 JST
小林 (koichik) 様
> 申し訳ありません,Seasar2.4.35 の問題です.
> [Seasar-user:17333] で指摘があり,修正して
> SNAPSHOT をデプロイ済みなので以下をお使いください.
>
> http://maven.seasar.org/maven2-snapshot/org/seasar/container/s2-framework/2.4.36-SNAPSHOT/s2-framework-2.4.36-20090428.100656-3.jar
> http://maven.seasar.org/maven2-snapshot/org/seasar/container/s2-extension/2.4.36-SNAPSHOT/s2-extension-2.4.36-20090428.100656-2.jar
> http://maven.seasar.org/maven2-snapshot/org/seasar/container/s2-tiger/2.4.36-SNAPSHOT/s2-tiger-2.4.36-20090428.101143-2.jar
SNAPSHOT版を適用し正常に動作しました。ありがとうございました。
ただ、新たな問題が発生している状態です。
セッションリスナでセッションの削除を検出し、DBからログイン情報を
削除しようとしているのですが、以下の★の箇所で後述の例外が発生し
ます。
HotDeploy対象外クラスからHotDeploy対象クラスを扱っているので、
もともと★の部分でClassCastExceptionが発生していたのですが、これ
はLoginDtoクラスをHotDeploy対象外 (diconに登録) にすることで回避
していました。(Seasar 2.4.34時)
しかし、Seasar 2.4.35ですと下記例外が発生するという状態です。
何か良い回避策はございますでしょうか?
@Override
public void sessionDestroyed(HttpSessionEvent se) {
HttpSession session = se.getSession();
↓↓★ココ★↓↓
LoginDto loginDto = (LoginDto)session.getAttribute("loginDto");
if (loginDto == null)
return;
}
// ログイン情報をデータベースから削除
LoginService loginService =
SingletonS2Container.getComponent(LoginService.class);
loginService.logout(loginDto);
}
java.lang.ClassCastException: org.seasar.framework.container.hotdeploy.HotdeployHttpSession$SerializedObjectHolder cannot be cast to com.kowa.ebiz.elsis2.core.server.dto.LoginDto
at com.kowa.ebiz.elsis2.core.server.listener.ApplicationEventListener.sessionDestroyed(ApplicationEventListener.java:110)
at org.apache.catalina.session.StandardSession.expire(StandardSession.java:697)
at org.apache.catalina.session.StandardSession.isValid(StandardSession.java:581)
at org.apache.catalina.session.ManagerBase.processExpires(ManagerBase.java:679)
at org.apache.catalina.session.ManagerBase.backgroundProcess(ManagerBase.java:664)
at org.apache.catalina.core.ContainerBase.backgroundProcess(ContainerBase.java:1285)
at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1570)
at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1579)
at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1579)
at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.run(ContainerBase.java:1559)
at java.lang.Thread.run(Thread.java:619)
Seasar-user メーリングリストの案内