[DAO-17] [seasar-dev:436] DaoMetaDataFactoryImplとhotdeploy Created: 2006-06-23  Updated: 2006-08-10  Resolved: 2006-07-06

Status: Resolved
Project: S2Dao
Component/s: s2dao
Affects Version/s: 1.0.35
Fix Version/s: 1.0.36

Type: Improvement Priority: Major
Reporter: manhole Assignee: manhole
Resolution: Fixed Votes: 0
Labels: None
Environment:

Seasar 2.4 (beta2 ?)
Seasar 2.3.10



 Description   

今S2DaoとS2.4系のhotdeploy機能を組み合わせて使ってみているのですが、
DaoMetaDataFactoryImpl#getDaoMetaData()でDaoクラスのDaoMetaDataを
キャッシュするところでクラス名をキーにしてキャッシュしているため、
Daoクラスがリロードされた後に昔のDaoクラス用のDaoMetaDataがヒット
してしまい、結果としてIllegalArgumentExceptionが発生してしまってい
ます。

そこで試しにキーをStringではなくClassオブジェクトにしたらうまくい
きましたので、もしも差し支えなければそのようにDaoMetaDataFactoryImpl
クラスを修正していただければ助かります。



 Comments   
Comment by manhole [ 2006-08-10 ]

確認ありがとうございます。

Comment by matobat [ 2006-08-10 ]

修正確認しました。ありがとうございます。
SQLファイルの変更も即時反映されるようになっていました。

Comment by manhole [ 2006-08-10 ]

S2Daoはhotdeploy対象外なのですね。勘違いしていました。

再度修正したので、ご確認いただけますか?

Comment by matobat [ 2006-08-09 ]

DisposableUtilでは毎回disposablesがクリアされるようなので、
DaoMetaDataFactoryImplのコンストラクタで登録していると最初の一回しかキャッシュがクリアされないようです。

現象:
1回目 = キャッシュがクリアされる(ここでDisposableUtilからDaoMetaDataFactoryImplが消える)
2回目 = キャッシュに残る
3回目 = エラーになる

これを直してもらったらリリースしてもらえるとありがたいです。

Comment by manhole [ 2006-07-06 ]

DaoMetaDataFactoryImplをDisposableにし、
コンストラクタにてDisposableUtilへ登録するようにしました。

Disposableは現在リリースされているSeasar2(2.3.10)に組み込まれていないため、
次バージョン(2.3.11?)以降と組み合わせる必要があります。

Comment by higa [ 2006-07-05 ]

賛成です。

Comment by manhole [ 2006-07-05 ]

S2Dao用のDisposableを用意する方法で行こうと考えているのですが、
どうでしょうか?

Comment by manhole [ 2006-06-23 ]

S2Dao用のServletFilterを追加して、リクエストのたびに
DaoMetaDataFactoryImplのキャッシュをクリアするようにしようと思います。

Generated at Wed Apr 16 01:07:48 JST 2025 using Jira 10.5.0#10050000-sha1:9d9d098bb7b67e8dba8da380ba9c3900d82ac3cf.