[Seasar-user:21927] SAStrutsからtiles:insertタグライブラリのcontrollerUrl属性を使用すると正常に動作しない事がある
安田正
[E-MAIL ADDRESS DELETED]
2014年 7月 24日 (木) 15:40:59 JST
初めまして。安田と申します。
早速ですがご質問させてください。
SAStrutsで、JSPの部品として以下のようなJSPを作成しました。
header.jsp
----------
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<tiles:insert controllerUrl="/parts/index.do?SAStruts.method=headerLink"
page="/WEB-INF/view/v4/common/headerLink.jsp" flush="false" />
----------
通常は、このtilesタグは使用可能なのですが、まれに障害が発生して、画面上のJSPの描画が停止してしまい、困っ
ております。
ActionとJSPの構成は以下の通りです。
・Actionクラスとメソッド
IndexAction#index()
IndexAction#headerLink()
・JSPファイル
index.jsp
header.jsp
headerLink.jsp
環境は、次の通りです。
・Windows7 64bit
・Eclipse
・Tomcat6.0
障害の発生手順は以下の通りです。
1.Eclipseで、サーバーをデバッグモードで立ち上げる。
2.httpsでIndexAction#index()にアクセスする。通常のページが開く
3.タイムアウトするのを待つ(今回はtomcatのセッションタイムアウト時間を1分にして試しました)
4.再度、1とおなじくhttpsでIndexAction#index()にアクセスする。
5.header.jsp の箇所で例外が発生する。
発生した例外は主に以下の通りです。
---------
7 23, 2014 3:39:42 午後 org.apache.jasper.runtime.JspFactoryImpl internalGetPageContext
重大: Exception initializing page context
java.lang.IllegalStateException: レスポンスをコミットした後でセッションを作成できません
at org.apache.catalina.connector.Request.doGetSession(Request.java:2437)
at org.apache.catalina.connector.Request.getSession(Request.java:2157)
at org.apache.catalina.connector.RequestFacade.getSession(RequestFacade.java:833)
----------
7 23, 2014 3:39:42 午後 org.apache.catalina.core.ApplicationContext log
重大: jsp: null
java.lang.NullPointerException
at org.apache.jsp.WEB_002dINF.view.v4.common.headerLink_jsp._jspService(headerLink_jsp.java:63)
----------
headerLink_jsp.javaの内容を見ると、JspFactoryからpageContextを取得する処理で例外が発生しています。
しかし、index.jspからindex_jsp.javaは生成しており、正常に実行できているようです。(例外も発生しません)
予想としては、pageContextがタイムアウト時に破棄されており、その生成に失敗しているのではと考えています。
しかし、対処方法はさっぱり解りません。
どなたか解決策をご存じないでしょうか。
以上です。宜しくお願いします。
Seasar-user メーリングリストの案内