Tsutomu YANO
t_yano****@me*****
2010年 6月 25日 (金) 15:22:00 JST
矢野です。忙しくて遅れましたすみません。 ちょっと調べてみたのですが、DiskPageStore自体にはストアファイルを削除するためのメソッドは用意されていないようでした。 しかしDiskPageStoreが使用するディレクトリは、protectedなメソッド「getFileStoreFolder()」で取得できるようですので、DiskPageStoreのサブクラスを作り、削除メソッドを追加することは可能だと思います。 サブクラスにdeleteFileStore()といったメソッドを用意し、getFileStoreFolder()の返すディレクトリをまるごと削除するようにしたらどうでしょう。サブクラスのコンストラクタ内で、そのメソッドを呼び出します。 ApplicationのnewSessionStore()をオーバーライドし、SecondLevelCacheSessionStoreに渡すDiskPageStoreオブジェクトを上記のサブクラスのものにかえてやれば、アプリケーションが起動してセッションストアが生成されるタイミングで、キャッシュファイルが削除されるようになるでしょう。 セッションストアの生成はアプリケーション起動時に一度だけ実行されますので、稼働中にキャッシュファイルが削除されることもないでしょう。 実際に上記のようなクラスを作ったわけではないので、若干穴があるかもしれませんが、ソースを追った限りでは上記の構成で行けるように思います。 いかがでしょうか。 --------------------- 矢野 勉(やの つとむ) t_yano****@me***** benbr****@mac***** 2010年6月16日 05:34PM、ozawa <filip****@gmail*****>のメッセージ: 矢野さん ご説明ありがとうございます。大変参考になりました。 サーブレットコンテナのセッション管理と同期されているということですね。 > ユーザがログアウトしなくとも,Servlet Containerに設定したセッション維持期間を過ぎれば,HttpSessionはServlet Containerが無効にします。 > WicketのAbstractHttpSessionStore.SessionBindingListenerがサーブレット仕様にあるHttpSessionBindingListenerインタフェースを実装しており,WicketのSessionが生成されると同時にHttpSessionに格納されます。コンテナがHttpSessionを破棄しようとすると,合わせてHttpSessionに格納されたSessionBindingListenerが破棄されるため,SessionBindingListenerに破棄通知が行われます。Wicketはこの破棄通知を利用して,DiskPageStoreの使用していたセッションファイルを破棄します。 > > なので,私は「不要ファイルを消す」という操作自体が必要ないと思います。Wicketが適時削除するでしょうから。 ただ、ご説明の仕様は、通常運用時はいいのですがサーバーの停止時にセッションを保持して、起動時に復元する機能(session persistence)が有効になっていることが前提の話と思います。 サーブレットコンテナやWebアプリのセッション復元設定次第では、「ファイルの削除を実施する必要あり」ということになると思います。 Webアプリが起動するタイミングでfilestoreを初期化する(空にする)といったことを実施したいと思うのですが、良い案や設定で可能などありましたらご教授願えれば幸いです。 #DiskPageStoreの使用するファイルサイズに関しては、矢野さんの著書を拝見しており設定可能な点、理解しております。ありがとうございます。 _______________________________________________ Wicket-ja-user mailing list Wicke****@lists***** http://lists.sourceforge.jp/mailman/listinfo/wicket-ja-user -------------- next part -------------- HTMLの添付ファイルを保管しました... Télécharger