iBatis使用OSCache作缓存与java.io.FileNotFoundException异常 - 编程入门网
tener.store(AbstractDiskPersistenceListener.java:376)
at com.opensymphony.oscache.plugins.diskpersistence.AbstractDiskPersistenceListener.store(AbstractDiskPersistenceListener.java:238)
at com.opensymphony.oscache.base.algorithm.AbstractConcurrentReadCache.persistStore(AbstractConcurrentReadCache.java:1113)
at com.opensymphony.oscache.base.algorithm.AbstractConcurrentReadCache.put(AbstractConcurrentReadCache.java:1623)
at com.opensymphony.oscache.base.algorithm.AbstractConcurrentReadCache.put(AbstractConcurrentReadCache.java:864)
at com.opensymphony.oscache.base.Cache.putInCache(Cache.java:637)
at com.opensymphony.oscache.base.Cache.putInCache(Cache.java:614)
at com.opensymphony.oscache.general.GeneralCacheAdministrator.putInCache(GeneralCacheAdministrator.java:270)
at com.ibatis.sqlmap.engine.cache.oscache.OSCacheController.putObject(OSCacheController.java:70)
at com.ibatis.sqlmap.engine.cache.CacheModel.putObject(CacheModel.java:318)
at com.ibatis.sqlmap.engine.mapping.statement.CachingStatement.executeQueryForObject(CachingStatement.java:80)
at com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.queryForObject(SqlMapExecutorDelegate.java:566)
at com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.queryForObject(SqlMapExecutorDelegate.java:541)
at com.ibatis.sqlmap.engine.impl.SqlMapSessionImpl.queryForObject(SqlMapSessionImpl.java:106)
at com.ibatis.sqlmap.engine.impl.SqlMapClientImpl.queryForObject(SqlMapClientImpl.java:83)
at com.unmi.TestClient.main(TestClient.java:25)
iBatis使用OSCache作缓存与java.io.FileNotFoundException异常(2)时间:2011-01-17 隔叶黄莺无法写某个文件,文件找不到,一开始我也以为是 OSCache 那方出了什么差错,所以 Google 的关键词都偏重于 OSCache FileNotFoundExcption。后来结合 iBatis 才艰难的 Google 到了这个:http://osdir.com/ml/java.ibatisdb.devel/2004-06/msg00079.html,也有同问的:http://forums.opensymphony.com/thread.jspa?messageID=673372&。说句外话,搜索这方面内容时,能时刻为党说话的 Baidu 就不太擅长了,基本上用它来搜索 ‘儿子’ 和药品是无敌的了。 看了前面那个贴子,拍了下脑袋,其实早该醒悟的,不就是说的:''e:\OSCache\cache\application\1991729862|2162672802|5|Product_31getById|62996507|_49_50_51_52_53_54_55_56_57select_64id,_68name,description_85as_88desc1_94_95from_100test_105product_113where_119id_122=_124_125_126_127_128_129_130 文件无法写吗。去看看 e:\OSCache\cache\application 目录中,没有这里提到的文件。如果你试图去手工建立这么一个文件,文件名有多长且不说,但 Windows 肯定要提示你:文件名不能包含下面任何字符: \ / : * ? " < > | 。对啦,问题就出在 iBatis 为 OSCache 生成的文件名上。 开源的东西对我们使用者有什么好处,就是能完全窥探到源代码呀。我的习惯是开源的组件,总会下载到相应的源代码摆在它的身边。于是 Debug/Step Into 吧,发现前面那个长长的文件名其实就是 OSCache 用来缓存 iBatis 查询得到结果(注:iBatis 被缓存的粒度没 Hibernate 的缓存细,不是以实体对象为单位,而是以查询结果为单位,所以会出现第一次查询的 id=2 or id=3 的结果被缓存了,第二次查询 id=2 时还是从数据库中取得 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |