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

jeecms v5 spring和ehcache的整合

阅读更多

               在jeecms v5中采用缓存管理回话的方式,这里采用最简单的ehcache实现回话的管理。

具体实现如下:

Ehcache的配置:

<?xml version="1.0" encoding="UTF-8"?>

<ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://ehcache.org/ehcache.xsd">

<!--<diskStore path="java.io.tmpdir/jeecms/hibernate"/>-->

<defaultCache maxElementsInMemory="10000" eternal="false" timeToIdleSeconds="120" timeToLiveSeconds="120"

overflowToDisk="true" diskSpoolBufferSizeMB="30" maxElementsOnDisk="10000000" 

diskPersistent="false" diskExpiryThreadIntervalSeconds="120"/>

 

<cache name="com.jeecms.common.web.session.Session" maxElementsInMemory="500" eternal="false" timeToIdleSeconds="1200" overflowToDisk="true" diskPersistent="true"/>

<cache name="com.jeecms.cms.front.ContentCount" maxElementsInMemory="500" eternal="true" overflowToDisk="true" diskPersistent="false"/>

 

</ehcache>

Spring的配置

<?xml version="1.0" encoding="UTF-8"?>

<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd"

default-lazy-init="true">

<!--缓存-->

<bean id="cacheManager" class="com.jeecms.common.web.WebEhCacheManagerFacotryBean">

<property name="configLocation">

<value>/WEB-INF/config/ehcache-application.xml</value>

</property>

<property name="diskStoreLocation">

<value>/WEB-INF/cache/application</value>

</property>

</bean>

<!--SESSION缓存-->

<bean id="ehSessionCache" class="org.springframework.cache.ehcache.EhCacheFactoryBean">

<property name="cacheManager">

<ref local="cacheManager"/>

</property>

<property name="cacheName">

<value>com.jeecms.common.web.Session</value>

</property>

<qualifier value="session"/>

</bean>

<!--内容计数缓存-->

<bean id="ehContentCountCache" class="org.springframework.cache.ehcache.EhCacheFactoryBean">

<property name="cacheManager">

<ref local="cacheManager"/>

</property>

<property name="cacheName">

<value>com.jeecms.cms.front.ContentCount</value>

</property>

<qualifier value="contentCount"/>

</bean>

 

<!--站点流量缓存-->

<bean id="ehCmsSiteFlowCache" class="org.springframework.cache.ehcache.EhCacheFactoryBean">

<property name="cacheManager">

<ref local="cacheManager"/>

</property>

<property name="cacheName">

<value>com.jeecms.cms.front.CmsSiteFlow</value>

</property>

<qualifier value="cmsSiteFlow"/>

</bean>

</beans>

package com.jeecms.common.web;

 

import java.io.IOException;

 

import net.sf.ehcache.CacheException;

import net.sf.ehcache.CacheManager;

import net.sf.ehcache.ObjectExistsException;

import net.sf.ehcache.config.Configuration;

import net.sf.ehcache.config.ConfigurationFactory;

import net.sf.ehcache.config.DiskStoreConfiguration;

 

import org.slf4j.Logger;

import org.slf4j.LoggerFactory;

import org.springframework.beans.factory.DisposableBean;

import org.springframework.beans.factory.FactoryBean;

import org.springframework.beans.factory.InitializingBean;

import org.springframework.core.io.Resource;

 

/**

 * 用于Web的EhCacheManagerFacotryBean。可以基于Web根目录指定diskStore地址。

 */

public class WebEhCacheManagerFacotryBean implements FactoryBean<CacheManager>,

InitializingBean, DisposableBean {

 

private final Logger log = LoggerFactory

.getLogger(WebEhCacheManagerFacotryBean.class);

 

private Resource configLocation;

private Resource diskStoreLocation;

 

private String cacheManagerName;

 

private CacheManager cacheManager;

 

/**

 * Set the location of the EHCache config file. A typical value is

 * "/WEB-INF/ehcache.xml".

 * <p>

 * Default is "ehcache.xml" in the root of the class path, or if not found,

 * "ehcache-failsafe.xml" in the EHCache jar (default EHCache

 * initialization).

 * 

 * @see net.sf.ehcache.CacheManager#create(java.io.InputStream)

 * @see net.sf.ehcache.CacheManager#CacheManager(java.io.InputStream)

 */

public void setConfigLocation(Resource configLocation) {

this.configLocation = configLocation;

}

 

/**

 * 设置ehcahce的diskStore path,例如:/WEB-INF/cache

 * 

 * 如设置了此项,则在ehcache配置文件中不要配置<diskStore path=""/>,否则本设置无效。

 * 

 * @param diskStoreLocation

 */

public void setdiskStoreLocation(Resource diskStoreLocation) {

this.diskStoreLocation = diskStoreLocation;

}

 

/**

 * Set the name of the EHCache CacheManager (if a specific name is desired).

 * 

 * @see net.sf.ehcache.CacheManager#setName(String)

 */

public void setCacheManagerName(String cacheManagerName) {

this.cacheManagerName = cacheManagerName;

}

 

public void afterPropertiesSet() throws IOException, CacheException {

log.info("Initializing EHCache CacheManager");

Configuration config = null;

if (this.configLocation != null) {

config = ConfigurationFactory

.parseConfiguration(this.configLocation.getInputStream());

if (this.diskStoreLocation != null) {

DiskStoreConfiguration dc = new DiskStoreConfiguration();

dc.setPath(this.diskStoreLocation.getFile().getAbsolutePath());

try {

config.addDiskStore(dc);

} catch (ObjectExistsException e) {

log.warn("if you want to config distStore in spring,"

+ " please remove diskStore in config file!", e);

}

}

}

if (config != null) {

this.cacheManager = new CacheManager(config);

} else {

this.cacheManager = new CacheManager();

}

if (this.cacheManagerName != null) {

this.cacheManager.setName(this.cacheManagerName);

}

}

 

public CacheManager getObject() {

return this.cacheManager;

}

 

public Class<? extends CacheManager> getObjectType() {

return (this.cacheManager != null ? this.cacheManager.getClass()

: CacheManager.class);

}

 

public boolean isSingleton() {

return true;

}

 

public void destroy() {

log.info("Shutting down EHCache CacheManager");

this.cacheManager.shutdown();

}

}

 

<!--EndFragment-->
分享到:
评论

相关推荐

    JEECMS v2012sp1源码工程包(已经导入源码的工程)

    JEECMS内容管理系统是国内java开源CMS行业知名度最高、用户量最大的站群管理系统。 · SpringMVC3+Spring3+Hibernate3+Freemarker技术架构 · 基于java技术开发,继承其强大、稳定、安全、高效、跨平台等多方面的...

    jeecms源码包

    2. **Spring框架**:作为Java企业级应用的常用框架,Spring可能用于依赖注入、AOP(面向切面编程)、事务管理等,使得Jeecms具有更好的可扩展性和模块化。 3. **MyBatis**:Jeecms可能使用MyBatis作为持久层框架,...

    jeecms 爬虫 1.3 正式版 (附带整合 jeecms2012工程源码)

    在源码方面,Jeecms 2012工程源码是基于Java开发的内容管理系统,它集成了许多流行的开源组件和技术,例如Spring、Hibernate、Struts等。通过查看源码,开发者可以深入理解Jeecms的内部工作原理,学习其架构设计,...

    JEECMS2.0版本源码阅读

    JEECMS2.0 版本源码阅读笔记 JEECMS 作为一个基于 Java 的内容管理系统,具有强大的功能和灵活的...JEECMS 2.0 版本的源码阅读可以帮助开发者更好地了解 JEECMS 的内部机制和设计理念,从而更好地使用和扩展 JEECMS。

    jeecmsv5 eclipse

    10. **性能优化**:JeecmsV5支持缓存机制,通过EhCache或Redis等缓存技术,可以显著提高网站的响应速度。 总的来说,JeecmsV5结合Eclipse提供了一个高效的企业级内容管理开发环境。开发者可以利用Eclipse的强大功能...

    JEECMS 内容管理系统(hibernate3+struts2+spring2).zip

    **JEECMS 内容管理系统** 是一个基于Java技术栈构建的企业级内容管理解决方案,它采用了经典的SSH(Struts2、Hibernate3、Spring2)框架进行开发。这个系统旨在为各种企业和组织提供灵活、高效的内容发布、管理和...

    jeecms-2012.zip

    作为Java企业级应用的重要支撑,Spring框架在Jeecms中承担了依赖注入(DI)和面向切面编程(AOP)的角色。DI使得对象间的依赖关系在运行时动态配置,增强了系统的灵活性;AOP则用于实现日志记录、事务管理等横切...

    jeecms文档

    同时,如果需要对原有数据进行迁移或整合,了解Jeecms的数据迁移工具和策略至关重要。 安全方面,Jeecms内置了一些安全机制,如防止SQL注入、XSS攻击等。然而,二次开发时,开发者需要确保新增功能不会引入新的安全...

    jeecms源码

    5. **配置(Configuration)**:Jeecms的配置文件(如`spring-context.xml`和`servlet-context.xml`)定义了Spring容器如何初始化和装配组件,以及SpringMVC的配置,如拦截器、视图解析器等。 6. **模块(Module)*...

    JEECMS 精简第二部分 共2

    针对性能优化,JEECMS可能使用了如 EhCache 或 Hibernate Second Level Cache 这样的缓存技术,以减少数据库交互,提升系统响应速度。 8. **国际化与多语言支持** 作为一个全球化系统,JEECMS可能会提供多语言...

    jeecms 源码包

    Jeecms是一款基于Java技术开发的内容管理系统,专为企事业单位及个人提供快速、高效、稳定的网站建设和管理平台。源码包通常包含整个系统的全部代码,是开发者深入理解系统架构、功能实现以及进行二次开发的基础。...

    JAVA 开发jeecms-2012

    9. 安全框架:考虑到网站的安全性,Jeecms可能会集成Shiro或Spring Security框架,提供身份验证、授权和会话管理功能。 10. MVC设计模式:Jeecms遵循Model-View-Controller(MVC)设计模式,将业务逻辑、视图展示和...

    JEECMS自学帮助集合(包括FreeMarker)

    5. **JEECMS网上文档集合**:JeeCMS网上文档集合.pdf整合了网络上的各种JEECMS教程和文档,提供了全面的学习资源。 6. **FreeMarker手册**:FreeMarker_Manual_zh_CN.pdf是FreeMarker的中文版官方手册,详细介绍了...

    jeecms3.2.2版本源码包

    2. **框架集成**:Jeecms可能集成了Spring Framework,用于处理依赖注入和事务管理;Hibernate或MyBatis作为ORM(对象关系映射)工具,帮助开发者便捷地操作数据库;Struts或Spring MVC作为控制器层,处理HTTP请求。...

    jeecms v6 复制和移动栏目报错修改

    jeecms v6 复制和移动栏目报错修改,直接覆盖这个页面就可以了

    jeecms v8.1 源码

    JEECMSv8.1是一款支持微信小程序、栏目模型、内容模型交叉自定义、以及具备支付和财务结算的内容电商为一体内容管理系统:通过后台的简单设置即可自定义出集新闻管理、图库管理、视频管理、下载系统、文库管理、政务...

    jeecms9.2-adminVue

    Jeecms是一个高度可定制的、基于Java技术的内容管理系统(CMS),以其强大的功能和灵活性受到开发者的青睐。9.2-adminVue版本是对该系统的一次重大更新,相较于之前的版本,它在功能和用户体验上都有显著提升。在...

    jeecms X1.0.1 正式版 源码包

     JEECMS一直秉承用户体验、系统性能和实际应用为第一的研发思路,让jeecms的功能不断丰富的同时,更让jeecms适合更多的应用人群。 根据用户反馈新增和完善的功能还有很多,诸如:支持百度编辑器ueditor、用户模型...

    jeecms5.1-src.zip 源码包

    Jeecms是一款基于Java技术开发的内容管理系统,专为企业的信息化建设和网站运营提供了强大的支持。它的源码包"jeecms5.1-src.zip"包含了整个系统的所有源代码,是学习和二次开发的理想资源。Jeecms的核心设计理念...

Global site tag (gtag.js) - Google Analytics