Javaに関する様々な情報をご紹介します。

Javaに関する様々な情報をご紹介します。
評価

0

Webアプリケーション開発におけるsessionスコープについて

現在strutsを用いたWebアプリケーションの設計、開発を行っ
ています。それに関してご相談があります。

ユーザーに関する情報を複数ページ、処理などを跨いでアプリ
ケーション上に保持しようとするとき、それをsessionスコー
プに登録して使用するのが、一番確実かつ便利な方法だと考え
ています。しかし同時に、sessionスコープの乱用はあまり良
くないという意見も多数聞きます(sessionスコープ登録を極力
少なくするような設計が望ましい、等)。

何かの情報を1セッション単位で管理するような実装を行う場
合、みなさんはどのような方法を取られていますか?
参考までにお聞かせ頂けると幸いです。

7

回答

4528

閲覧

7件の回答

評価

0

>ご相談があります。
自分の話に「ご」はつけないもんだよ。

肝心なのは、情報の範囲や利用度を的確に見積もることだ。
たまにしか利用されない情報なら、わざわざセッションに格納しないでも、必要なリクエストでだけ引っ張るのでもいいはず。
いざセッションが破棄された後にリクエストがあった場合に、それをちゃんと復元できるのか(または適切なエラー処理があるか)どうかも、ポイントになる。
セッションはブラウザが落ちたり、cookieが消えたりする以外でも消えるもんだと思ってる方がいい。

また、アプリサーバの状態によって一旦シリアライズされ、復元されることもある。情報が多ければ多いだけ、時間がかかるだろう。

評価

0

なんつーか、格納する情報のライフサイクルが、
セッションであるならば、セッションスコープに格納すべきだし、
要件と情報とライフサイクル次第。

ひとえにセッションの乱用云々とか言ってる連中って、
大抵がメモリ云々というところが主張なんだけど、
いまどきそんな話をしているところが胡散臭い。
乱用してもしなくても、使えばメモリの制約はあるし、
別にいまどきメモリも安いのでどうにかなる。

それよりも、セッションがでかくなって困るのは、
$さんも言ってるシリアライズコストと、クラスタリングの同期化コスト。

まあ適切に使ってりゃ問題ないと思うよ。

評価

0

セッションの使用はアプリケーションの構成によって利用方法が異なります。
社内システムのような、利用者が決まっている場合には、システム側である程度利用方法を制限しやすいのでセッション管理はあまり意識しなくても何とかなるケースが多いですが、インターネットで公開されるようなシステム(ショッピングサイトなど)ではセッションの管理方法を色々考えないと予期せぬ影響が出ることがあります。
ブラウザで複数画面を同時に開いてセッションの内容とページの内容に同期が取れなくなってしまうことです。セッションを多用するとこのような現象がおきやすいです。
IPA などのセキュリティ系のサイトを見ると、セッションの使用方法について参考になりますよ。

評価

0

質問の内容から、「session=Tomcatのsessionオブジェクト」のレベルだと思うけどね。
たしかに、いわゆる「セッション」は、モノによって意味するところが違う。

評価

0

sessionに登録するオブジェクトを減らすっていっても、EJB stateful session beanを使うかhiddenを使うか?くらいしか代替策がないのでは・・・。

クラスタを組むのでもなければ、sessionのサイズは気にしなくてもいいのでは?

クラスタ組むなら、でっかいオブジェクトはsession beanにいれるのかなあ。

評価

0

クラスタリングはしてないけど、sessionの復元でTomcatの起動はどんどん遅くなるよ。
マシンパワー上げろって話もあるが。
実行中はともかく、起動は重い。

オブジェクトを「減らす」ってのは、代替案を探せってことじゃなくて、なんでもかんでも「入れておけばいいや」って人がいるから「ちゃんと考えろ」ってことでしょ。

評価

0

クラスタ組むと、適切なクラスタ構成にしないとね、
全てのクラスタにセッションが同期されて、
例えば512Mのセッションが全てのサーバで同期されるということになるよ。
特にTomcatのような単純クラスタはね。

しっかりしているJ2EEサーバなら違うけど。
全台で同期とったりしないからスケールアウトも可能。

話がそれちゃったけど、
それなりにスケールを意識した設計になると、
極力ステートレスなつくりにしないといけなくなるし、
そうなると、自然とセッションサイズは減ると思うんだけど。

業務系プログラマの人って、インフラ=無限に広がる魔法の箱という人が多くない?
アプリとしては論理的に正しい=正しく動くというわけじゃないし、
もう少しステートフルにアプリを作ると、
どうなるかを意識して欲しいんだよね。

質問から6ヶ月以上経過しているので、回答を書き込むことはできません。