- PR -

JSFで作成したプログラムの遷移

1
投稿者投稿内容
しま太郎
常連さん
会議室デビュー日: 2006/08/22
投稿数: 39
投稿日時: 2007-06-22 11:00
こんにちは。いつもお世話になっております。

ただ今JSFを使用してプログラムを作成しているのですが、
遷移について不思議な現象が起こってしまい、困っています。

プログラムをサーバーにあげてテストをしているのですが、テスト用として用意したサーバー(LAN接続)の方は正常に動きます。
同じように本番用サーバーを外に置き試したところ、LAN・ネットの両方ともクリックを2回しないと画面遷移ができないようになっていました。この本番用サーバは上記のテスト用とは別のハードウェアですが、OS(Linux)やマシンスペック等は全く同じものを使用しており、その設定にも差異はない「はず」と設定者には言われてしまいました。
また、本番用サーバーにはstrutsで作成した別プロジェクトも動いているのですが、こちらは問題なく動いています。

<h:commandLink />を2回クリックして遷移した後、内部リンクで元のページに戻った場合、また同じリンクを押すと今度は1回のクリックで遷移できます。
ですが、同じようにひとつのあるリンクを2回クリックして遷移した後、今度はブラウザの”戻る”ボタンを2回押してで元のページへ戻った場合、やはり2回クリックしないと遷移はできません。

==============================================================
【具体的な例】

●Aページ
<h:commandLink action="b_page" value="B Page GO!" />

("B Page GO!"を1回クリック)
 →A’ページへ遷移
--------------------------------------------------------
●A’ページ(Aページと見た目は同じ)
<h:commandLink action="b_page" value="B Page GO!" />

("B Page GO!"を1回クリック)
 →Bページへ遷移

--------------------------------------------------------
●Bページ

(ブラウザの"戻る"を1回クリック)
 →A'ページへ遷移[※A’ページでは1回クリックすると遷移可能]

(ブラウザの"戻る"を2回クリック)
 →Aページへ遷移[※Aページでは2回クリックすると遷移可能]
 -------------------------------------------
<h:commandLink action="a_page" value="A Page GO!" />

("A Page GO!"を1回クリック)
 →A'ページへ遷移
==============================================================

自分で引っかかるのは
 ・faces-config.xmlで遷移に<redirect />を付けている
 ・SSL設定をしているのですが、その影響か
 ・1回押した直後にURLの後ろにjsessionidというのが付くときがある。
   (これについては付かないときもあるので、
   原因とは考えられにくいかもしれません)
というところですが、どうも原因が特定できません・・
ぐぐってみたりもしたのですが、どうも検索キーワードなどが悪いのかhitしません・・

どなたかこうした現象について思い当たる方がいらっしゃいましたらご教授いただけますでしょうか。。
よろしくお願いいたします。
nagise
ぬし
会議室デビュー日: 2006/05/19
投稿数: 1141
投稿日時: 2007-06-22 13:07
まずはHTTPレベルでどのようなリクエストが飛んでいるのか確認してみては?

2回クリックというのは、ダブルクリックなわけではなく、
1回めのクリックで遷移がおき、同じ画面が表示され、
その見た目が同じ画面でもう一度ボタンを押すと本来狙っていた遷移が起きるということでしょうか?

だとしたら、1度目で表示されるHTMLと、2度目で表示されるHTMLを比較してみるとか。

JSFといえど、結局のところHTTPで動的生成したHTMLをやり取りしているだけなので、
ローレベルなところの動きを確認すると見えてくるものもあると思いますよ。
KOX
大ベテラン
会議室デビュー日: 2004/08/23
投稿数: 142
投稿日時: 2007-06-22 14:19
パケットキャプチャをとってみて、
1回目のクリックがきちんとサーバに届いているか確認してみてはどうでしょう。

#どっかでキャッシュしてたりして。・・・違うか。
しま太郎
常連さん
会議室デビュー日: 2006/08/22
投稿数: 39
投稿日時: 2007-06-22 14:22
nagise様、ご返答頂きありがとうございます。
引用:

2回クリックというのは、ダブルクリックなわけではなく、
1回めのクリックで遷移がおき、同じ画面が表示され、
その見た目が同じ画面でもう一度ボタンを押すと本来狙っていた遷移が起きるということでしょうか?

だとしたら、1度目で表示されるHTMLと、2度目で表示されるHTMLを比較してみるとか。


そうです。
HTML比較はファイル比較ツールを使って確かめましたが、全く同じでした。。
nagise
ぬし
会議室デビュー日: 2006/05/19
投稿数: 1141
投稿日時: 2007-06-22 15:04
引用:

しま太郎さんの書き込み (2007-06-22 14:22) より:
HTML比較はファイル比較ツールを使って確かめましたが、全く同じでした。。



ん〜。
KOX氏もおっしゃっていますが、キャッシュが怪しい気もしますね。
本番環境のネットワークではプロキシサーバがあるというケースとか?

パケットはサーバまで到達していますか?
パケットを直接キャプチャしなくとも、アクセスログを確認すればわかりますよね。
しま太郎
常連さん
会議室デビュー日: 2006/08/22
投稿数: 39
投稿日時: 2007-06-25 13:46
ご返答いただきましたのに、返事が遅れてしまい、申し訳ございません。。
KOX様、nagise様、アドバイス頂きありがとうございました。

log出力を確認した所、1度目のクリックではlog出力されず、2度目のクリックでようやくlogに出力されていました。

また、本番環境の状態を確認したところ、少々特殊なものになっている(二重構造?)ようなので、それが影響しているのかもしれません。。
パケットが一度目では届いていないことが分かりましたので、それが何故なのか調査したいと思います。
(同じ環境下でstrutsプログラムのプロジェクトは問題なく動いているので、JSFのナビゲーションの問題なのか、どうなのか調べてみたいと思います。)

本番機は設定がお客様にお聞きしないと不明な部分もありますので、また進展がありましたら書き込みさせていただきたいと思います。

アドバイス頂き、誠にありがとうございました。
あしゅ
ぬし
会議室デビュー日: 2005/08/05
投稿数: 613
投稿日時: 2007-06-25 18:54
プロキシのキャッシュのクセっぽいですね。
JSFってデフォルトでCache-controlの類のヘッダ付いていましたっけ?
Struts版のアプリとヘッダの付き方を比較してみるとよいかもしれません。
しま太郎
常連さん
会議室デビュー日: 2006/08/22
投稿数: 39
投稿日時: 2007-07-13 17:00
返信が遅れてしまい、誠に申し訳ございません。
引用:

あしゅさんの書き込み (2007-06-25 18:54) より:
プロキシのキャッシュのクセっぽいですね。
JSFってデフォルトでCache-controlの類のヘッダ付いていましたっけ?
Struts版のアプリとヘッダの付き方を比較してみるとよいかもしれません。


付いていないかと思われます。
キャッシュですか・・・
キャッシュは”戻る”対策のために、キャッシュを削除するincファイルを作成し、JSPでそのフィルをインクルードして対処しています。
とはいえ、Strutsの方は問題ないので、そこを重点的に探してみます。

アドバイス頂き、誠にありがとうございました。
1

スキルアップ/キャリアアップ(JOB@IT)