iBatis 使用 OSCache 作缓存与 java.io.FileNotFoundException 异常
2009-09-22 00:00:00 来源:WEB开发网这种异常只会发生在 Windows 平台上,可以说是 iBatis 的一个 Bug,大约 iBatis 的开发测试人员都比较热衷于 Unix 族系的平台,而忽略了 Windows 下的兼容性测试。
出现 FileNotFoundException 异常的情形是这样的:Windows7 + iBatis2.3.0.677 + OSCache2.4.1。
iBatis 中配置使用 OSCache 缓存,在映射文件 Product.xml 中有如下声明片断:
1.<cacheModel type="OSCACHE" id="productCache">
2. <flushOnExecute statement="Product.insert"/>
3. <flushOnExecute statement="Product.delete"/>
4.</cacheModel>
5.
6.<select id="getById" cacheModel="productCache" parameterClass="int" resultClass="Product">
7. select id, name,description as desc1 from test_product where id = #value#
8.</select>
OSCache 的 oscache.properties 中指明用磁盘文件缓存数据,注意以下几个配置:
01.#不缓存到内存
02.cache.memory=false
03.
04.#缓存持久化实现类,磁盘持久化监听器
05.cache.persistence.class=com.opensymphony.oscache.plugins.diskpersistence.DiskPersistenceListener
06.
07.#缓存磁盘路径,以后注意观察该目录生成的内容
08.cache.path=e:\\OSCache\\cache
09.
10.#选择一种缓存算法,还可选 FIFOCache、UnlimitedCache
11.cache.algorithm=com.opensymphony.oscache.base.algorithm.LRUCache
Java 测试代码:
1.public static void main(String[] args) throws Exception{
2. Reader reader = Resources.getResourceAsReader("SqlMapConfig.xml");
3. SqlMapClient sqlMapClient = SqlMapClientBuilder.buildSqlMapClient(reader);
4. System.out.println(sqlMapClient.queryForObject("Product.getById",5));
5.
6. //后面同样的查询将不再查询数据库,而是直接使用前面执行放在缓存中的内容
7. System.out.println(sqlMapClient.queryForObject("Product.getById",5));
8.}
- ››使用脚本恢复WinXP系统的用户登录密码
- ››使用phpMyadmin创建数据库及独立数据库帐号
- ››使用Zend Framework框架中的Zend_Mail模块发送邮件...
- ››使用cout标准输出如何控制小数点后位数
- ››使用nofollow标签做SEO的技巧
- ››使用 WebSphere Message Broker 的 WebSphere Tra...
- ››使用SQL Server事件探查器做应用程序的性能分析
- ››使用SQL Server事件探查器分析死锁原因
- ››使用纯文本文件打造WCF服务
- ››使用 Dojo 开发定制 Business Space 小部件,第 4...
- ››使用 ADDRESS 与 INDIRECT函数查询信息
- ››使用 COLUMN函数编制单元信息
赞助商链接