- - PR -
セッションIDからセッションを取得したい
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2007-12-04 01:54
お世話になります。
Struts、tomcat5.5で開発しております。 件名の通り、セッションIDからセッションを取得する方法はありますでしょうか? Action.execute()内で他セッションを取得したいのですが(セッションIDはわかっている) ServletContext等を調べてみましたが、それらしきAPIは発見できませんでした。 宜しく御願い致します。 ---以下は経緯です--- 右記の様な画面遷移があり(画面:A>B>C>D) 各画面の入力値・結果値をセッション変数に登録、D画面でそれらを表示しています。 FirefoxでA〜D画面と処理した後に D画面に結果と、URL+現在のセッションID(ttp://○○/actionD.do?sid=12345)を表示し IE(Firefox以外のブラウザ)でこのURLを開き、Action内で12345のセッションを取得し D画面に先のFirefoxでの結果(セッション変数)表示させたいのです。 セッション変数でなくアプリケーション変数に登録すれば 実現できると思うのですが、アプリケーション変数はタイムアウトが無いですよね? なので、途中の画面で操作を辞められた場合に削除できないので 今回の方法が実現できないかと思い質問させて頂きました。 | ||||
|
投稿日時: 2007-12-04 02:03
セッションをセッションIDで維持したいなら、
http://xxxxxx.do;jsessionid=xxxxxxxxx で維持できませんか? 何故独自のIDでセッションを維持しようとしているのかがわかりません。 基本的に他のセッションIDをAPI経由で取得する事はできません。 Tomcatに限った話をすれば、JMX経由でセッションIDとセッション名をキーに、 セッションの値を取得する事はできますが、全くお勧めはしません。 また、コンテキストスコープは、 タイムアウト云々以前にアプリケーション内において グローバルな値を管理するために利用します。 一旦ブラウザを閉じてから再度状態を復元したいのであれば、 データベースに格納するのがよいかと思います。 タイムアウトの代わりに時間列を用意すれば済むだけの話です。 | ||||
|
投稿日時: 2007-12-04 02:36
かつのりさん、返信ありがとうございます。
http://xxx.do;jsessionid=xxxxx の方法なのですが、Cookieが使用できるブラウザから上記URLにアクセスすると セッションID=xxxxxを使用せず、新しいセッションを作成されてしまう。 また、GETパラメータを付けれない(http://xxx.do?yyy=zzz;jsessionid=xxxxx) 上記の理由から諦めていました。 テスト方法が悪かったのでしょうか。もう1度試してみたいと思います。 今回は、D画面がIEでないとレイアウトが崩れてしまうため 本格的な修正(D画面を全ブラウザ対応)完了するまでの間(約1ヶ月程) 簡単な方法で対応しておきたかったので FirefoxのセッションIDを使用し、IEでセッション変数を取得できないかと思った次第です。 | ||||
|
投稿日時: 2007-12-04 09:46
Tomcat側ですが、以下のような設定でどうでしょう? <Context path="/xxx" docBase="/home/yyy/zzz" cookies="false"> |
1