[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 メーリングリストの案内