JSP業務アプリケーション短期開発入門に添付されていたサンプルアプリケーションを、以下の自宅サーバー環境にデプロイしたところ、各所に不具合が出て、WEBアプリが動きません。
これはどうしてなのでしょうか。
【デプロイした環境】
CENTOS 5.1
TOMCAT 6(web.xmlを使ってディレクトリ設定を行いました)
JDK 1.6.0_06
【不具合の内容】
●JSP業務アプリケーション短期開発入門(JSPのほう)の画面で、セッション(第8章)ボタンを押下し、セッションテストの画面で、セッションが書き込まれていない
●JSPとJavaコードの分離の画面で、ログイン後、トップページに遷移したところ、該当のtop.jspファイルが存在しないわけではないのに、HTTP404エラーとなる。(ちなみにこれは、
response.sendRedirect の部分を
getServletContext().getRequestDispatcher("").forward(request,response);
)
に書き換えたり、session_timeout.jspへの遷移の部分をコメントアウトしたりしたら解決しました。)
どうもセッションが効いていないようなかんじです。
そもそもサーバーサイドでセッションを使うためのコーディングになってないのでしょうか?
上記以外に必要な情報があれば教えてください。(デプロイしたWARファイルを送ってもかまわないです。)
何とか解決したいのですが、よろしくお願いできますでしょうか。
これはどうしてなのでしょうか。
【デプロイした環境】
CENTOS 5.1
TOMCAT 6(web.xmlを使ってディレクトリ設定を行いました)
JDK 1.6.0_06
【不具合の内容】
●JSP業務アプリケーション短期開発入門(JSPのほう)の画面で、セッション(第8章)ボタンを押下し、セッションテストの画面で、セッションが書き込まれていない
●JSPとJavaコードの分離の画面で、ログイン後、トップページに遷移したところ、該当のtop.jspファイルが存在しないわけではないのに、HTTP404エラーとなる。(ちなみにこれは、
response.sendRedirect の部分を
getServletContext().getRequestDispatcher("").forward(request,response);
)
に書き換えたり、session_timeout.jspへの遷移の部分をコメントアウトしたりしたら解決しました。)
どうもセッションが効いていないようなかんじです。
そもそもサーバーサイドでセッションを使うためのコーディングになってないのでしょうか?
上記以外に必要な情報があれば教えてください。(デプロイしたWARファイルを送ってもかまわないです。)
何とか解決したいのですが、よろしくお願いできますでしょうか。
投稿:natsu1[natsu1]/2008年 06月 14日 05時 20分
/更新:2008年 06月 14日 05時 20分
RE:Linux環境にサンプルアプリケーションをデプロイしたところ、各所に不具合があります。
by 竹形 誠司[takegata]
竹形です。こんにちは。
Tomcatでは、デフォルトでセッションを使うようになっているので、サーバー側では特に設定などは必要ありません。一方、(P.229にも書きましたが)ブラウザ側でクッキーの設定が「すべて拒否」になっているとセッションが使えません。そのあたりを今一度確認してみてください。
ログイン後に404エラーが出るのは、session_timeout.jspが見つからないからですね。このファイルはサーバ上にありますか?
Tomcatでは、デフォルトでセッションを使うようになっているので、サーバー側では特に設定などは必要ありません。一方、(P.229にも書きましたが)ブラウザ側でクッキーの設定が「すべて拒否」になっているとセッションが使えません。そのあたりを今一度確認してみてください。
ログイン後に404エラーが出るのは、session_timeout.jspが見つからないからですね。このファイルはサーバ上にありますか?
投稿:竹形 誠司[takegata]/2008年 06月 14日 06時 48分
/更新:2008年 06月 14日 06時 48分
>一方、(P.229にも書きましたが)ブラウザ側でクッキーの設定が
>「すべて拒否」になっているとセッションが使えません。
>そのあたりを今一度確認してみてください。
セッションCookieを許可するという設定をしているのです。
また、ローカル環境でTomcatを立ち上げて、localhost:8080での接続で、
セッション(第8章)ボタンを押下したセッションテストの画面では、セッションは有効なのです。
>ログイン後に404エラーが出るのは、session_timeout.jspが見つからないからですね。このファイルはサーバ上にありますか?
session_timeout.jspはtop.jspと同ディレクトリに存在します。読み取り権限も実行権限もあります。
そして、この問題に関しては、session_timeout.jspへの遷移を
response.sendRedirect を使わず
getServletContext().getRequestDispatcher("").forward(request,response)
を使ったら解決しました。
http://oshiete1.goo.ne.jp/qa888716.html
こちらのページに書かれていることと同じ現象だと解釈しています。
また、それ以前に、top.jsp先頭部での
if(user.getName()==null){
でTrueとならなければ、session_timeout.jspに遷移することもありませんので、本来ならば、404エラーも発生しませんよね?
ちなみに、JSP業務アプリケーション短期開発入門の「セッション(第8章)」で使うform.jsp、write.jsp、read.jspに、
<%= session.getId() %>
を埋め込んで、セッションIDを表示させてみたところ、
localhost:8080での実行では、セッションIDは変わらない。
サーバーホスト:80 での実行では、1ページの遷移ごとにセッションIDが変わっていました。
これを書きながら、ふと思い当たり、調べてみたのですが、
自宅サーバーの環境ですが、apacheとtomcatを連携させて使う設定にしているのですが、もしかしたらこちらに原因があるのかもしれません。
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=33108&forum=10&7
このページで同様の報告があるので。
そんな気がしてきました。。orz
>「すべて拒否」になっているとセッションが使えません。
>そのあたりを今一度確認してみてください。
セッションCookieを許可するという設定をしているのです。
また、ローカル環境でTomcatを立ち上げて、localhost:8080での接続で、
セッション(第8章)ボタンを押下したセッションテストの画面では、セッションは有効なのです。
>ログイン後に404エラーが出るのは、session_timeout.jspが見つからないからですね。このファイルはサーバ上にありますか?
session_timeout.jspはtop.jspと同ディレクトリに存在します。読み取り権限も実行権限もあります。
そして、この問題に関しては、session_timeout.jspへの遷移を
response.sendRedirect を使わず
getServletContext().getRequestDispatcher("").forward(request,response)
を使ったら解決しました。
http://oshiete1.goo.ne.jp/qa888716.html
こちらのページに書かれていることと同じ現象だと解釈しています。
また、それ以前に、top.jsp先頭部での
if(user.getName()==null){
でTrueとならなければ、session_timeout.jspに遷移することもありませんので、本来ならば、404エラーも発生しませんよね?
ちなみに、JSP業務アプリケーション短期開発入門の「セッション(第8章)」で使うform.jsp、write.jsp、read.jspに、
<%= session.getId() %>
を埋め込んで、セッションIDを表示させてみたところ、
localhost:8080での実行では、セッションIDは変わらない。
サーバーホスト:80 での実行では、1ページの遷移ごとにセッションIDが変わっていました。
これを書きながら、ふと思い当たり、調べてみたのですが、
自宅サーバーの環境ですが、apacheとtomcatを連携させて使う設定にしているのですが、もしかしたらこちらに原因があるのかもしれません。
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=33108&forum=10&7
このページで同様の報告があるので。
そんな気がしてきました。。orz
投稿:natsu1[natsu1]/2008年 06月 14日 09時 12分