[Seasar-user:19544] Re: S2Dao使用時に、なぜかリクエストがnullになる
Koichi Kobayashi
[E-MAIL ADDRESS DELETED]
2010年 3月 23日 (火) 19:00:00 JST
小林 (koichik) です.
Date: Tue, 23 Mar 2010 18:09:09 +0900
From: 熊谷 大 <[E-MAIL ADDRESS DELETED]>
To: <[E-MAIL ADDRESS DELETED]>
Subject: [Seasar-user:19541] S2Dao使用時に、なぜかリクエストがnullになる
> 状況としましては、S2Daoを使ったDBアクセス時に、
> リクエストとレスポンスがnullになっており、例外が発生しています。
リクエストとレスポンスが null というのは,具体的に
どこから取得したものが null なのでしょうか?
スタックトレースには
> Caused by: java.sql.SQLException: 引数(response/getSessionInfo())が不正です。
と出ていますが,この response が null なのか,
それとも getSessionInfo() の結果が null なのかに
よっても調べるポイントが変わってくると思いますが.
> 類似現象を検索したところ、
> =================================
> [CONTAINER-211] - RequestDispatcher#forward() や include() をした場合に,
> S2ContainerFilter が外部コンテキストの request/response を null にしてしまうため,
> 後続の処理で request/response を参照すると NullPointerException が
> 発生する問題を修正しました.[Seasar-user:15379]
> http://www.seasar.org/wiki/index.php?ChangeLog%2FSeasar#t25c07ef
> =================================
> という情報を発見したのですが、バージョンを上げても解決しませんでした。
これは forward()/include() して dispatch 元に
戻ってきた時に外部コンテキストがクリアされて
いるという問題で,今回のように forward() した先で
起きる問題ではありません.
というか,スタックトレースを見る限り,forward() で
s2filter が適用されていないので関係ありません.
これだと外部コンテキストが保持している request/
response は forward() 前のもので,forward() 後の
request/response になりません.
そうしたいのならいいのですが,そういうことはあまり
ないように思います.
forward() した先では forward() 後の request/response を
使用したいのなら,web.xml で
<filter-mapping>
<filter-name>s2filter</filter-name>
<url-pattern>/*</url-pattern>
<dispatcher>REQUEST</dispatcher>
<dispatcher>FORWARD</dispatcher>
<dispatcher>INCLUDE</dispatcher>
</filter-mapping>
などとする必要があります.
--
<component name="koichik">
<property name="fullName">"Koichi Kobayashi"</property>
<property name="email">"[E-MAIL ADDRESS DELETED]"</property>
<property name="blog">"http://d.hatena.ne.jp/koichik"</property>
</component>
Seasar-user メーリングリストの案内