竹形誠司 ブログ
ご質問    »トピック一覧
掲示板へのスパムが多いため、「ご質問」のコーナーはユーザー登録制とさせていただきました。お手数ですが、上の「新規ユーザーの登録」メニューより登録をお願いします。
帳票Web
アプリケーション

受注開発始めました
詳しくは こちら
竹形 誠司 著/ラトルズ刊
JSP帳票アプリケーション実践開発入門
JSP帳票アプリケーション
実践開発入門

JSP業務アプリケーション短期開発入門
JSP業務アプリケーション
短期開発入門

Java+MySQL+Tomcatで始めるWebアプリケーション構築入門
Java+MySQL+Tomcatで始めるWebアプリケーション構築入門

Java+MySQL+Tomcatで作る掲示板とブログ
Java+MySQL+Tomcatで作る
掲示板とブログ
Linux環境にサンプルアプリケーションをデプロイしたところ、各所に不具合があります。
by natsu1[natsu1]
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ファイルを送ってもかまわないです。)
何とか解決したいのですが、よろしくお願いできますでしょうか。

投稿:natsu1[natsu1]/2008年 06月 14日 05時 20分 /更新:2008年 06月 14日 05時 20分
RE:Linux環境にサンプルアプリケーションをデプロイしたところ、各所に不具合があります。
by 竹形 誠司[takegata]
竹形です。こんにちは。

Tomcatでは、デフォルトでセッションを使うようになっているので、サーバー側では特に設定などは必要ありません。一方、(P.229にも書きましたが)ブラウザ側でクッキーの設定が「すべて拒否」になっているとセッションが使えません。そのあたりを今一度確認してみてください。

ログイン後に404エラーが出るのは、session_timeout.jspが見つからないからですね。このファイルはサーバ上にありますか?

投稿:竹形 誠司[takegata]/2008年 06月 14日 06時 48分 /更新:2008年 06月 14日 06時 48分
RE:Linux環境にサンプルアプリケーションをデプロイしたところ、各所に不具合があります。
by natsu1[natsu1]
>一方、(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


投稿:natsu1[natsu1]/2008年 06月 14日 09時 12分