`
elicer
  • 浏览: 133392 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Websphere Dynamic Cache 跟 Ibatis 集成

阅读更多
要集成Dynamic cache 跟 ibatis的cache 主要就是要写CacheController
import 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>
0
0
分享到:
评论

相关推荐

    spring集成ibatis示例-websphere5.1选型webservice

    在本示例中,我们将探讨如何在Spring框架中集成iBATIS,并且将这个集成应用部署到WebSphere 5.1服务器上,并提供一个基于Web服务的接口。首先,我们需要理解Spring和iBATIS的基本概念。 Spring是一个开源的Java企业...

    myEclipse与webSphere集成

    本文将详细介绍如何将MyEclipse与WebSphere进行集成,以便在MyEclipse中管理和部署WebSphere应用,尽管这个过程不涉及代码同步。 MyEclipse是一款功能强大的Java集成开发环境,特别适合于企业级Java应用程序的开发...

    Websphere 集群安装及集成IHS手册详细版.doc

    Websphere 集群安装及集成 IHS 手册详细版 本资源详细介绍了 Websphere 8.5 的集群安装和集成 IHS 的过程,从操作系统参数优化到安装步骤的每一个细节都进行了详细的描述。以下是从文件中提取的关键知识点: 一、...

    WebSphere与Weblogic集成产品比较.pdf

    ### WebSphere与Weblogic集成产品比较 #### 一、引言 随着企业信息化建设的深入发展,业务集成已成为企业IT架构的重要组成部分。本文旨在对比分析IBM WebSphere集成平台与BEA WebLogic集成平台在业务集成方面的...

    IBM Websphere与IBM HttpServer的集成

    【IBM Websphere与IBM HttpServer的集成】 IBM Websphere是一个强大的企业级应用服务器,它支持与多种Web服务器的集成,包括IBM HttpServer(IHS),这是一个经过IBM改造的Apache Web服务器,专为与IBM WebSphere...

    Lotus Domino与IBM WebSphere的集成开发

    Lotus Domino与IBM WebSphere的集成开发是一个复杂但至关重要的任务,特别是在企业级应用程序的构建中。这两个平台各自拥有独特的优点,将它们有效地整合能够充分利用它们的优势,为组织带来更高效、灵活且可扩展的...

    websphere

    ### WebSphere设计与LDAP集成深度解析 #### 一、引言:目录服务与WebSphere的关系 WebSphere作为IBM的一款企业级应用服务器,提供了强大的中间件功能,包括事务处理、消息传递、安全性和集群管理等,旨在帮助企业...

    IBM WebSphere MQ 技术白皮书.doc

    * 灵活的集成方式:WebSphere MQ 支持多种集成方式,包括点对点式、发布/订阅式等,满足企业的不同集成需求。 * 强大的安全机制:WebSphere MQ 具有强大的安全机制,包括身份验证、授权和加密等,确保消息传递的安全...

    通向架构师的道路(第十六天)IBM Websphere与IBM HttpServer的集成.docx

    IBM Websphere能够与多种Web服务器进行集成,IHS是IBM对Apache Web服务器的定制版本,增强了与WAS的配合。集成过程中,IHS通过plugin与WAS建立连接,实现应用程序的转发和负载均衡。这种集成方式类似于Weblogic与...

    山大WebSphere考试题

    - WebSphere还包含了集成开发环境(IDE),如IBM Eclipse Tools for WebSphere,便于开发者创建、调试和部署应用程序。 2. **WebSphere架构**: - WebSphere通常由多个组件构成,如Deployment Manager、Node ...

    websphere缓存java调用以及jar包

    在WebSphere中,缓存主要通过WebSphere Application Server Liberty Profile和传统Profile中的Cache Manager实现。Cache Manager是一个内置的服务,它允许开发者创建、管理以及控制应用程序的缓存策略。以下是一些...

    websphere 6.1 资料集

    2. **Linux安装**:文件名中多次提到在Linux环境下安装Websphere,因此这部分内容将详细阐述在Linux操作系统上安装Websphere的特殊注意事项,比如处理权限问题、依赖库的安装、与Linux服务的集成等。 3. **VMware上...

    WebSphere实验报告.zip

    实验涵盖了Enterprise JavaBeans (EJB)的开发和部署,包括会话bean、实体bean和消息驱动bean的概念,以及如何在WebSphere环境中集成和管理EJB组件。 7. 实验七:JMS与消息传递 学生将学习Java消息服务(JMS)的...

    WebSphere入门教程大合集

    WebSphere提供了全面的集成解决方案,涵盖了从开发、测试到生产的一系列生命周期管理。 二、WebSphere安装与配置 学习WebSphere,首先需要了解如何安装和配置服务器。这包括选择合适的版本(如WebSphere ...

    WebSphere Portal 与 Tivoli Access Manager 集成

    【WebSphere Portal 与 Tivoli Access Manager 集成】是企业级门户解决方案中一个重要的集成案例。WebSphere Portal 是IBM提供的一款企业级门户平台,用于构建和管理个性化、可扩展的网络入口,而Tivoli Access ...

    在WebSphere发布CXF注意事项

    首先,理解CXF与WebSphere的集成原理至关重要。CXF提供了一个Servlet容器插件,可以将其作为一个Servlet部署到任何符合Servlet规范的应用服务器中,包括WebSphere。在WebSphere中,你需要将CXF的JAR文件添加到应用的...

    Websphere8.5安装

    在所有组件安装完成后,还需要进行集成测试,确保WebSphere 8.5、IHS以及WAS插件能协同工作。这可能包括启动和停止服务、测试HTTP和HTTPS连接,以及验证应用程序的部署和运行。在整个过程中,注意记录每个步骤,以...

    WebSphere开发与管理_源代码

    WebSphere通过WebSphere Application Server Integration (WASI) 和各种连接器,如WebSphere MQ、DB2,与其他系统进行集成。源代码可能涉及这些集成点,帮助理解数据和消息的传输过程。 10. **持续集成与部署** ...

    websphere中文入门教程

    学习如何在Websphere上实现这些集成,以及如何利用Websphere的插件架构进行扩展,是提升应用能力的关键。 【压缩包子文件的文件名称列表解析】: 1. "Websphere MQ入门教程.doc" - 这份文档详细介绍了Websphere MQ...

Global site tag (gtag.js) - Google Analytics