- PR -

servlet application スコープ変数の定時更新

1
投稿者投稿内容
ちゃーり。
会議室デビュー日: 2006/02/05
投稿数: 1
投稿日時: 2006-03-03 23:16
お世話になっております。

題名の方法で悩んでおります。

たとえば、一日一回TBL更新したデータを取得して、applicationスコープ変数にて保持しておいて、そちらをサイトのエントランスページで表示させることを実現したいと考えております。(一日の間は同じデータで全訪問者に対して問題ないため)

処理の効率性を考えると、毎回ページリクエスト毎にSQLでデータを取得することは望ましくないため、上記方法を望んでいるのですが、バッチのようにapplication変数を一日一回更新するスマートな方法が思いつきません。

servletでTBLからデータを再取得するクラスを作って、バッチでそのservletのURLを一日一回リクエストしてあげれば、データは更新されると思いますが、どーもいまいち。。スマートじゃないような。。

なにか、スタンダードな方式はございませんでしょうか?


さいくろう
大ベテラン
会議室デビュー日: 2005/11/19
投稿数: 170
お住まい・勤務地: 川崎市
投稿日時: 2006-03-03 23:24
1.データを取得するクラスとメソッドを作る、
2.メソッドはstaticにする、
3.メソッドの先頭で、日付が変わったかどうかチェックする、
4.データがまだ存在しないか、日付が変わった場合は、
  新規作成して保管。そしてそれを返す。
5.データが存在していて、日付が変わっていない場合は、保管されているデータを返す。

ってのでどうでしょう。
かつのり
ぬし
会議室デビュー日: 2004/03/18
投稿数: 2015
お住まい・勤務地: 札幌
投稿日時: 2006-03-03 23:34
サーブレットのinitメソッド内で、
java.util.Timer/java.util.TimerTaskを使用して、
1日1回データ更新処理を行うのはいかがでしょうか。

java.util.TimerTaskを継承するときに、サーブレットコンテキストのインスタンスを
そのクラスに渡せるようにすると、楽にできると思います。
1

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