- PR -

セッションIDからセッションを取得したい

1
投稿者投稿内容
ハナビ
会議室デビュー日: 2007/12/04
投稿数: 2
投稿日時: 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での結果(セッション変数)表示させたいのです。

セッション変数でなくアプリケーション変数に登録すれば
実現できると思うのですが、アプリケーション変数はタイムアウトが無いですよね?
なので、途中の画面で操作を辞められた場合に削除できないので
今回の方法が実現できないかと思い質問させて頂きました。
かつのり
ぬし
会議室デビュー日: 2004/03/18
投稿数: 2015
お住まい・勤務地: 札幌
投稿日時: 2007-12-04 02:03
セッションをセッションIDで維持したいなら、
http://xxxxxx.do;jsessionid=xxxxxxxxx
で維持できませんか?
何故独自のIDでセッションを維持しようとしているのかがわかりません。

基本的に他のセッションIDをAPI経由で取得する事はできません。
Tomcatに限った話をすれば、JMX経由でセッションIDとセッション名をキーに、
セッションの値を取得する事はできますが、全くお勧めはしません。

また、コンテキストスコープは、
タイムアウト云々以前にアプリケーション内において
グローバルな値を管理するために利用します。

一旦ブラウザを閉じてから再度状態を復元したいのであれば、
データベースに格納するのがよいかと思います。
タイムアウトの代わりに時間列を用意すれば済むだけの話です。
ハナビ
会議室デビュー日: 2007/12/04
投稿数: 2
投稿日時: 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でセッション変数を取得できないかと思った次第です。
GENZO
大ベテラン
会議室デビュー日: 2003/11/26
投稿数: 111
お住まい・勤務地: 名古屋
投稿日時: 2007-12-04 09:46
引用:

ハナビさんの書き込み (2007-12-04 02:36) より:
セッションID=xxxxxを使用せず、新しいセッションを作成されてしまう。



Tomcat側ですが、以下のような設定でどうでしょう?
<Context path="/xxx" docBase="/home/yyy/zzz" cookies="false">
1

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