[Seasar-user:16097] TeedaAjax+S2DaoでClassCastExceptionが発生します。

Naoto SHINGAKI [E-MAIL ADDRESS DELETED]
2008年 10月 23日 (木) 17:52:05 JST


初めまして。お世話になります。
新垣と申します。

現在Chura Projectを利用し開発を行なっております。
しかしながら一部エラーがつぶせない為御教授頂ければと思います。

JDK 1.5.0_15
Dolting 0.28.0
teedaAjax 1.0.12
s2Dao 1.0.47

teedaAjaxよりKumuを利用しPOSTした際にJavaにてS2Daoを使い
Daoクラスをインスタンス化すると

XxxDao xxxDao = (XxxDao) container.getComponent(XxxDao.class)

にてClassCastExceptionが発生します。
そのまま同じメソッドにPostすると2回目以降は発生しません。
この現象はHot Deploy時にのみ発生し、Warm Deploy及びCool Deploy時には発生しません。
また、ajaxを使わずにdoメソッドとしてPostした場合は発生しません。

以下にException発生付近のソースを転記します。
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー

S2Container container = S2ContainerFactory.create("jp/co/xxx/XxxDao.dicon");
container.init();
XxxDao xxxDao = (XxxDao)container.getComponent(XxxDao.class);

ーーーーーーーーーーーーーーーーーーーーーーーーーーーー



以下にスタックトレースを転記します。
クラス名は実際のものから変更しております。
ーーーーーーーーーーーーーーーーーーーーーーーーーーーー

メッセージ

説明 The server encountered an internal error () that prevented it from
fulfilling this request.

例外

javax.servlet.ServletException: The error occurred while create Ajax
response. jp.co.package.dao.TblXxxDao$$EnhancedByS2AOP$$2606b8
       org.seasar.teeda.ajax.AjaxServlet.doAjax(AjaxServlet.java:116)
       org.seasar.teeda.ajax.AjaxServlet.doPost(AjaxServlet.java:75)
       javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
       javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
       org.seasar.framework.container.hotdeploy.HotdeployFilter.doFilter(HotdeployFilter.java:63)
       org.seasar.framework.container.filter.S2ContainerFilter.doFilter(S2ContainerFilter.java:77)
       org.seasar.extension.filter.EncodingFilter.doFilter(EncodingFilter.java:69)

原因

java.lang.ClassCastException: jp.co.package.dao.XxxDao$$EnhancedByS2AOP$$2606b8
       jp.co.package.logic.XxxxLogic.getItems(XxxxLogic.java:72)
       jp.co.package.service.XxxxxService.getEntity(XxxxxService.java:47)
       jp.co.package.web.xxx.XxxxxxPage.ajaxEntity(XxxxxxPage.java:79)
       jp.co.package.web.xxx.XxxxxxPage$$EnhancedByS2AOP$$130661d.$$ajaxEntity$$invokeSuperMethod$$(XxxxxxPage$$EnhancedByS2AOP$$130661d.java)
       jp.co.package.web.xxx.XxxxxxPage$$EnhancedByS2AOP$$130661d$$MethodInvocation$$ajaxEntity2.proceed(MethodInvocationClassGenerator.java)
       org.seasar.framework.aop.interceptors.TraceInterceptor.invoke(TraceInterceptor.java:73)
       jp.co.package.web.xxx.XxxxxxPage$$EnhancedByS2AOP$$130661d$$MethodInvocation$$ajaxEntity2.proceed(MethodInvocationClassGenerator.java)
       jp.co.package.web.xxx.XxxxxxPage$$EnhancedByS2AOP$$130661d.ajaxEntity(ReportPage$$EnhancedByS2AOP$$130661d.java)
       sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
       sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
       sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
       java.lang.reflect.Method.invoke(Method.java:585)
       org.seasar.framework.util.MethodUtil.invoke(MethodUtil.java:93)
       org.seasar.framework.beans.impl.BeanDescImpl.invoke(BeanDescImpl.java:213)
       org.seasar.teeda.ajax.AjaxServlet.doAjax(AjaxServlet.java:114)
       org.seasar.teeda.ajax.AjaxServlet.doPost(AjaxServlet.java:75)
       javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
       javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
       org.seasar.framework.container.hotdeploy.HotdeployFilter.doFilter(HotdeployFilter.java:63)
       org.seasar.framework.container.filter.S2ContainerFilter.doFilter(S2ContainerFilter.java:77)
       org.seasar.extension.filter.EncodingFilter.doFilter(EncodingFilter.java:69)

ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー

以上です。


Seasar-user メーリングリストの案内