要集成Dynamic cache 跟 ibatis的cache 主要就是要写CacheControllerimport java.util.Properties;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import com.ibatis.sqlmap.engine.cache.CacheController;
import com.ibatis.sqlmap.engine.cache.CacheModel;
import com.ibm.websphere.cache.DistributedMap;
public class DynamicCacheController implements CacheController {
//对应dynamic cache的 jndi
private String cacheInstance = "cacheInstance";
/**
* @return the cacheManager
*/
public DistributedMap getCacheManager() {
return cacheManager;
}
/**
* @param cacheManager the cacheManager to set
*/
public void setCacheManager(DistributedMap cacheManager) {
this.cacheManager = cacheManager;
}
/** The DynamicCache CacheManager. */
private DistributedMap cacheManager;
/**
* Flush a cache model.
* @param cacheModel - the model to flush.
*/
public void flush(CacheModel cacheModel) {
cacheManager.clear();
}
/**
* Get an object from a cache model.
* @param cacheModel - the model.
* @param key - the key to the object.
* @return the object if in the cache, or null(?).
*/
public Object getObject(CacheModel cacheModel, Object key) {
Object result = cacheManager.get(key);
return result;
}
/**
* Put an object into a cache model.
* @param cacheModel - the model to add the object to.
* @param key - the key to the object.
* @param object - the object to add.
*/
public void putObject(CacheModel cacheModel, Object key, Object object) {
cacheManager.put(key,object);
}
/**
* Remove an object from a cache model.
* @param cacheModel - the model to remove the object from.
* @param key - the key to the object.
* @return the removed object(?).
*/
public Object removeObject(CacheModel cacheModel, Object key) {
Object result = this.getObject(cacheModel, key);
cacheManager.remove(key);
return result;
}
/**
* Configure a cache controller. Initialize the DynamicCache Manager as a singleton.
* @param props - the properties object continaing configuration information.
*/
public void setProperties(Properties props) {
try {
cacheManager = (DistributedMap) new InitialContext().lookup(cacheInstance);
} catch (NamingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
/**
* Shut down the DynamicCache CacheManager.
*/
public void finalize() {
if (cacheManager != null) {
cacheManager.clear();
}
}
}
使用的配置文件如下配置你自己的CacheModel 指定type是我们自己写的cacheController,这里就是DynamicCacheController,在配置cachemodel时有两点注意的地方它有两个属性,一个是readonly,表示这个cacheInstance是不是只读的,还有一个属性是serialize,如果设为false 表示这是一个session level的cache,反之true表示这个一个application level的cache,每次都会返回一个instance,但是此时所有存入cache的东西都必须是serializable的,这就带来了一个问题了,如果设为true的话,我们就不能用lazy load了,因为lazy load的 proxy是不能序列化的。 所以一般在使用时要权衡一下利弊。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE sqlMap PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN" "http://ibatis.apache.org/dtd/sql-map-2.dtd">
<sqlMap namespace="TestCache">
<!-- Alias for the classes -->
<typeAlias alias="tableColumnCache" type="com.******.TableTestDTO" />
<typeAlias alias="MapCacheController" type="com.**********.DynamicCacheTestController"/>
<!-- readOnly表示这个Cache Instance是只读的,serialize=true表示这个cache 是application level的,负责只是session level的-->
<cacheModel id="tableTestCacheModel" type="MapCacheController" readOnly="true" serialize="false">
<flushInterval hours="24"/>
<property name="CacheSize" value="100"/>
</cacheModel>
<!-- cacheModel="product-cache" resultMap="productCache" -->
<statement id="loadTableColumnCache" cacheModel="tableTestCacheModel" resultMap="listTableColumnCache">
</statement>
</sqlMap>
分享到:
相关推荐
在本示例中,我们将探讨如何在Spring框架中集成iBATIS,并且将这个集成应用部署到WebSphere 5.1服务器上,并提供一个基于Web服务的接口。首先,我们需要理解Spring和iBATIS的基本概念。 Spring是一个开源的Java企业...
本文将详细介绍如何将MyEclipse与WebSphere进行集成,以便在MyEclipse中管理和部署WebSphere应用,尽管这个过程不涉及代码同步。 MyEclipse是一款功能强大的Java集成开发环境,特别适合于企业级Java应用程序的开发...
Websphere 集群安装及集成 IHS 手册详细版 本资源详细介绍了 Websphere 8.5 的集群安装和集成 IHS 的过程,从操作系统参数优化到安装步骤的每一个细节都进行了详细的描述。以下是从文件中提取的关键知识点: 一、...
### WebSphere与Weblogic集成产品比较 #### 一、引言 随着企业信息化建设的深入发展,业务集成已成为企业IT架构的重要组成部分。本文旨在对比分析IBM WebSphere集成平台与BEA WebLogic集成平台在业务集成方面的...
【IBM Websphere与IBM HttpServer的集成】 IBM Websphere是一个强大的企业级应用服务器,它支持与多种Web服务器的集成,包括IBM HttpServer(IHS),这是一个经过IBM改造的Apache Web服务器,专为与IBM WebSphere...
Lotus Domino与IBM WebSphere的集成开发是一个复杂但至关重要的任务,特别是在企业级应用程序的构建中。这两个平台各自拥有独特的优点,将它们有效地整合能够充分利用它们的优势,为组织带来更高效、灵活且可扩展的...
### WebSphere设计与LDAP集成深度解析 #### 一、引言:目录服务与WebSphere的关系 WebSphere作为IBM的一款企业级应用服务器,提供了强大的中间件功能,包括事务处理、消息传递、安全性和集群管理等,旨在帮助企业...
* 灵活的集成方式:WebSphere MQ 支持多种集成方式,包括点对点式、发布/订阅式等,满足企业的不同集成需求。 * 强大的安全机制:WebSphere MQ 具有强大的安全机制,包括身份验证、授权和加密等,确保消息传递的安全...
IBM Websphere能够与多种Web服务器进行集成,IHS是IBM对Apache Web服务器的定制版本,增强了与WAS的配合。集成过程中,IHS通过plugin与WAS建立连接,实现应用程序的转发和负载均衡。这种集成方式类似于Weblogic与...
- WebSphere还包含了集成开发环境(IDE),如IBM Eclipse Tools for WebSphere,便于开发者创建、调试和部署应用程序。 2. **WebSphere架构**: - WebSphere通常由多个组件构成,如Deployment Manager、Node ...
在WebSphere中,缓存主要通过WebSphere Application Server Liberty Profile和传统Profile中的Cache Manager实现。Cache Manager是一个内置的服务,它允许开发者创建、管理以及控制应用程序的缓存策略。以下是一些...
2. **Linux安装**:文件名中多次提到在Linux环境下安装Websphere,因此这部分内容将详细阐述在Linux操作系统上安装Websphere的特殊注意事项,比如处理权限问题、依赖库的安装、与Linux服务的集成等。 3. **VMware上...
实验涵盖了Enterprise JavaBeans (EJB)的开发和部署,包括会话bean、实体bean和消息驱动bean的概念,以及如何在WebSphere环境中集成和管理EJB组件。 7. 实验七:JMS与消息传递 学生将学习Java消息服务(JMS)的...
WebSphere提供了全面的集成解决方案,涵盖了从开发、测试到生产的一系列生命周期管理。 二、WebSphere安装与配置 学习WebSphere,首先需要了解如何安装和配置服务器。这包括选择合适的版本(如WebSphere ...
【WebSphere Portal 与 Tivoli Access Manager 集成】是企业级门户解决方案中一个重要的集成案例。WebSphere Portal 是IBM提供的一款企业级门户平台,用于构建和管理个性化、可扩展的网络入口,而Tivoli Access ...
首先,理解CXF与WebSphere的集成原理至关重要。CXF提供了一个Servlet容器插件,可以将其作为一个Servlet部署到任何符合Servlet规范的应用服务器中,包括WebSphere。在WebSphere中,你需要将CXF的JAR文件添加到应用的...
在所有组件安装完成后,还需要进行集成测试,确保WebSphere 8.5、IHS以及WAS插件能协同工作。这可能包括启动和停止服务、测试HTTP和HTTPS连接,以及验证应用程序的部署和运行。在整个过程中,注意记录每个步骤,以...
WebSphere通过WebSphere Application Server Integration (WASI) 和各种连接器,如WebSphere MQ、DB2,与其他系统进行集成。源代码可能涉及这些集成点,帮助理解数据和消息的传输过程。 10. **持续集成与部署** ...
学习如何在Websphere上实现这些集成,以及如何利用Websphere的插件架构进行扩展,是提升应用能力的关键。 【压缩包子文件的文件名称列表解析】: 1. "Websphere MQ入门教程.doc" - 这份文档详细介绍了Websphere MQ...