- - PR -
データキャッシュで相談です
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2007-01-26 16:17
こんにちは、お世話になっております。
いま、次のような要件に取り組んでいます。 ウェブサービスにて(サーバ:Tomcat4.1.30、J2EE1.3.1、JDK1.4) メニューから呼び出されるいくつかのアプリケーションがあります。 各アプリケーションはそれぞれの設定ファイルの情報を読み込み 初期化処理を行います。 しかし、アプリケーションが呼び出されるたびに 毎回設定ファイルを読み込むのはストレスです。 そこでキャッシュすることを考えたのですが 全設定ファイルを保持するのもどうかと思ったのです。 アプリケーションの中にはほとんど起動しないものから 頻繁に起動するものもありますので 頻繁に起動するものはキャッシュし そうでないものはキャッシュしないようにしました。 (キャッシュする/しないフラグ) ここで欲が出ました。 キャッシュするだけしておいて 一定時間経ったら自動的にキャッシュから削除されるような 仕組みってないかなぁと。 調べて見ると.NETでは http://www.microsoft.com/japan/msdn/columns/asp/asp04262001.aspx Cacheオブジェクトでこの仕組みを実現していました。 Javaでも似たようなものをご存知ないでしょうか。 | ||||
|
投稿日時: 2007-01-26 16:53
陳腐化したオブジェクトを削除する仕組みがあるかどうかはわかりませんが、Jakarta Commons Cache とかいいかもしれません。
http://jakarta.apache.org/commons/sandbox/cache/ | ||||
|
投稿日時: 2007-01-26 17:07
http://www.java-source.net/open-source/cache-solutions
お好きなものをどうぞ。 | ||||
|
投稿日時: 2007-01-26 17:38
自前で作るならLinkedHashMapのremoveEldestEntryをオーバーライドすれば簡単にできますよ。
ただし、LinkedHashMapは同期化されていないので、Collections#synchronizedMapでラップしたりする必要があると思いますが。 # ConcurrentLinkedHashMapは残念ながら存在しない…。 追記
この場合、新しいオブジェクトをキャッシュに追加した際に古いオブジェクトを削除する機会を与えるだけなので、『一定時間経ったら』とはちょっと違いましたね。 [ メッセージ編集済み 編集者: sawat 編集日時 2007-01-26 17:47 ] | ||||
|
投稿日時: 2007-01-26 18:01
みなさんお返事ありがとうございます。
> http://jakarta.apache.org/commons/sandbox/cache/ このページのリンクがいくつも潰れているのが残念 > Open Source Cache Solutions in Java 結構いろいろあるんですね > ConcurrentLinkedHashMap こういう考え方もありですね これらを参考にいろいろ試して見たいと思います。 良い報告ができるといいのですが。 |
1