ClassCastException

CMSポートレット、Tomahawk 1.1.3、Teeda 1.0.3 で、アップロードまわりで変な Exception を得た。というわけで、メモ。見た感じでは、Teedaでポートレット環境のチェック漏れがあるような気もするな。

Nested Exception is
java.lang.ClassCastException: jp.sf.pal.tomahawk.multipart.MultipartPortletRequestWrapper
at org.seasar.teeda.core.util.ServletExternalContextUtil.getRequest(ServletExternalContextUtil.java:187)
at org.seasar.teeda.core.util.ServletExternalContextUtil.isPost(ServletExternalContextUtil.java:204)
at org.seasar.teeda.core.lifecycle.impl.RestoreViewPhase.setUpRestoreViewPhase(RestoreViewPhase.java:90)
at org.seasar.teeda.core.lifecycle.impl.RestoreViewPhase.executePhase(RestoreViewPhase.java:63)
at org.seasar.teeda.core.lifecycle.AbstractPhase.execute(AbstractPhase.java:55)
at org.seasar.teeda.core.lifecycle.impl.RestoreViewPhase$$EnhancedByS2AOP$$399f5d89.$$execute$$invokeSuperMethod$$(RestoreViewPhase$$EnhancedByS2AOP$$399f5d89.java)
at org.seasar.teeda.core.lifecycle.impl.RestoreViewPhase$$EnhancedByS2AOP$$399f5d89$$MethodInvocation$$execute0.proceed(MethodInvocationClassGenerator.java)
at org.seasar.teeda.core.interceptor.MeasurementInterceptor.invoke(MeasurementInterceptor.java:46)
at org.seasar.teeda.core.lifecycle.impl.RestoreViewPhase$$EnhancedByS2AOP$$399f5d89$$MethodInvocation$$execute0.proceed(MethodInvocationClassGenerator.java)
at org.seasar.teeda.core.lifecycle.impl.RestoreViewPhase$$EnhancedByS2AOP$$399f5d89.execute(RestoreViewPhase$$EnhancedByS2AOP$$399f5d89.java)
at org.seasar.teeda.core.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:67)
at org.seasar.teeda.core.portlet.FacesPortlet.executeFaces(FacesPortlet.java:358)
at org.seasar.teeda.core.portlet.FacesPortlet.processAction(FacesPortlet.java:334)

追記:修正した。この問題は、Jetspeed2やPlutoでは、普通に使っていては、見つからんかったのね。もしかしたら、ほかにもこんな場所があるかも、っと思い、ServletExternalContextUtilのgetRequestがポートレットで呼ばれるかを見てみた。ほかには呼ばれるような形跡はないみたい。あとは、getResonseもチェックした方がいいな・・・。あとで、しよ。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です