- PR -

Strutsで複数のウィンドウ間のデータのやり取りについて

投稿者投稿内容
sumin
ベテラン
会議室デビュー日: 2003/07/17
投稿数: 93
投稿日時: 2003-12-26 01:55
引用:

masakaさんの書き込み (2003-12-25 18:04) より:
sessionの中身を確実に掃除する方法はないと思います。(画面遷移の途中でブラウザを閉じられてしまえば、掃除されないで残ってしまうので)

ただ、そんなにsessionを恐れる必要はないのではないか、というのが正直な感想です。
sessionの中身を掃除するのが面倒というのは確かにそのとおりですが、例え掃除されなかったとしても、最近のJavaVMは賢いので、sessionがタイムアウトした後に適当なタイミングでガーベジコレクションが走って、メモリは開放されると思います。少なくとも私がいままでかかわったプロジェクトではsessionに入れすぎたためにメモリが足りなくなったということはありません。

私としてはそれよりもHiddenを使うことによるセキュリティ上の心配の方が大きいです。



sessionに物を入れすぎると業務用のアプリのように多数の人々が長い時間使う場合には使用者数分のセッションとそれだけのオブジェクトがリソースを占有する事になると思います。しかも業務時間中はずっとです。私も今まで幾つかのプロジェクトに関わって来ましたがいつも出来るだけセッションには出来るだけ物を入れないようにしてました。今回新しくStrutsを使う事になり気にしてますが、、、
Anthyhime
ぬし
会議室デビュー日: 2002/09/10
投稿数: 437
投稿日時: 2003-12-26 06:45
確かに難しい問題ですね。セッションタイムアウトまでにActionFormが旧世代入りしてしまうとフルGCが走るまで開放されなくなってしまいますから。
ただし、逆にセッションを利用することによるセキュリティの向上と開発工数の削減(まぁ微々たるものかもしれませんが)が得られることを考えると利用しないのも不自然な気がします。
ActionFormで消費されるメモリサイズを計算し、利用者数とかけてみて最大どのくらいのメモリが消費されるかシュミレーションされてはいかがでしょうか。
この容量が十分ヒープに収まるのであればお客さんにも説明がしやすいでしょう。
sumin
ベテラン
会議室デビュー日: 2003/07/17
投稿数: 93
投稿日時: 2003-12-26 07:02
引用:

Anthyhimeさんの書き込み (2003-12-26 06:45) より:

ただし、逆にセッションを利用することによるセキュリティの向上と開発工数の削減(まぁ微々たるものかもしれませんが)が得られることを考えると利用しないのも不自然な気がします。


セキュリティ上のメリットは確かに無視出来ないことですが、開発効率の面ではHidden項目をリクエストごとに自動に渡してくれる仕組みをフレームワーク上で実装しておくと一般開発者の負担は結構減るのではと思っています。

例えば、前画面のパラメータを次の画面にHidden項目として渡したい場合はActionFormにあるフィールドにその旨を設定しておけば拡張されたActionServletがActionクラスの実行後にその処理を自動でやってくれて、次画面のJSPではカスタムタグで渡されたHidden項目を自動で挿入してくれれば一般開発者の負担は結構減りますね。このアイディアには何か問題がありますでしょうか?

で、セキュリティ的に問題になりそうな部分はSessionを利用し、そうでない部分はリクエストごとにHiddenで渡す、と言う事を考えてますが。

引用:

ActionFormで消費されるメモリサイズを計算し、利用者数とかけてみて最大どのくらいのメモリが消費されるかシュミレーションされてはいかがでしょうか。
この容量が十分ヒープに収まるのであればお客さんにも説明がしやすいでしょう。



これはすばらしいアイディアですね。ただ、フレームワークの設計中で業務の要件がはっきりしてない状態なのでサンプリングがちょっと。。それと、なにより、メモリー上であるインスタンスがどれくらいのメモリーを占有するかはどうして確認出来ますか?
(主題とはずれてしまいますが参考までに。。)

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