今、ポートレットのMyFacesブリッジを作成していて、たまたま ClassCastException に遭遇して気づいたのだが、チェックすべきなのは~Responseではなかろうか・・・。
protected void storeResponseCharacterEncoding( ExternalContext externalContext) { // Portlet: RenderRequest does not have getCharacterEncoding() if (externalContext.getRequest() instanceof ServletRequest) { ServletRequest req = (ServletRequest) externalContext.getRequest(); if (ServletExternalContextUtil.isHttpServletRequest(req)) { HttpServletResponse httpRes = ServletExternalContextUtil .getResponse(externalContext); HttpSession session = (HttpSession) externalContext .getSession(false); if (session != null) { session.setAttribute(ViewHandler.CHARACTER_ENCODING_KEY, httpRes.getCharacterEncoding()); } } } }