Tag: ehcache

Ehcache设置为永恒,但无论如何都会忘记元素?

我正在尝试配置Ehcache(版本2.5),以便它永远不会忘记项目。 我正在以编程方式配置,我没有触及任何配置XML文件。 通过将eternal设置为true ,我的理解是,如果我的磁盘空间不足或超过maxBytesLocalDisk (或者如果应用程序终止),则可以从缓存中删除项目的唯一情况。 但是,此测试程序未显示该行为: public static void main(String[] args) { CacheManager cacheManager = CacheManager.create(); Cache cache = new Cache( new CacheConfiguration().name(“test”) .overflowToDisk(true) .eternal(true) .maxBytesLocalHeap(1, MemoryUnit.MEGABYTES) .overflowToOffHeap(false) .maxBytesLocalDisk(100, MemoryUnit.GIGABYTES) .maxElementsOnDisk(0) .timeToIdleSeconds(0) .timeToLiveSeconds(0) .diskStorePath(“E:\\Data\\Ehcache”)); cacheManager.addCache(cache); for(int i = 0; i < 1000000; i++){ cache.put(new Element("key_" + i, "value_" + i)); } System.out.println(cache.getSize()); } 因此,在我的缓存中添加了100万个元素之后,我告诉它溢出到一个数量级足够大的磁盘,最后我只得到了3276个项目。 这里发生了什么?

运行时的Ehcache缓存大小

我正在生产中运行一个大型VM,并希望在运行时了解有关我的缓存大小的更多信息。 我的缓存都基于ehache 在运行时查看单个缓存大小的最佳方法是什么。 使用JMX或API 是否有任何选项可以通过对CacheManager的普通旧java调用进行配置,或者(暂时忽略JMX)是否必须在一个大字符串中构建XML配置slug?

Spring:hibernate + ehcache

我正在使用一个使用hibernate的spring项目,并期望使用ehcache实现二级缓存。 我看到了很多方法: spring-modules-cache引入了@Cacheable注释 ehcache-spring-annotations一个工具集,旨在成为spring-modules-cache的inheritance者。 Hibernate cache很好地集成到hibernate本身,以使用例如@Cache注释执行缓存。 使用代理的Programmatic cache 。 基于注释的配置很快变得有限或复杂(例如,几个级别的注释嵌套) 就个人而言,我不认为spring-modules-cache足够彻底,因此我可能更愿意考虑更积极开发的ehcache-spring-annotations 。 Hibernate cache虽然似乎是最完整的实现(例如,读取和写入缓存等)。 什么会激励使用哪个工具集? 请分享您的缓存体验……

如何为Spring Cache设置自定义KeyGenerator?

我正在使用Spring 3.1,我想使用新的缓存function。 然后,我试过: 但我没有找到配置我的自定义KeyGenerator的方法。 任何想法?

如何使用Spring清除所有Hibernate缓存(ehcache)?

我正在使用二级缓存和查询缓存。 我可以知道如何以编程方式清除所有缓存吗?

OSCache与EHCache

从来没有使用过像这样的缓存。 问题是我想从数据库中加载500,000条记录并快速选择/过滤邪恶的记录。 我正在考虑使用缓存,初步发现EHCache和OSCache ,有什么意见吗?

如何通过相对路径引用本地XSD文件

这是关于如何配置Eclipse以使用`ehcache`的后续内容,并且在如何正确引用本地XML架构文件中有一个绝对路径示例? 由于不再托管xsd文件,我从存档中下载了它的副本。 我把文件放在我的资源目录中,并希望从我项目的相对路径中的xsi:schemaLocation引用它。 我们有windows和mac开发人员,因此像file:///c:/project/foo这样的绝对路径约定将不起作用。 相对路径的另一种替代方法是,如果有一种方法可以引用windows和mac的系统属性,那么我可以执行2个条目,如file:///$HOME/workspace/foo 。 我的mac上的项目存在于~/workspace/foo ,$ HOME的echo给出了我的主路径。 我的spring-cache.xml存在于./src/main/webapp/WEB-INF/spring/ 我的ehcache-spring-1.2.xsd存在于./src/main/resources/ 以下是我尝试过的一些没有成功: file:///$HOME/workspace/foo/src/main/resources/ehcache-spring-1.2.xsd file:///./src/main/resources/ehcache-spring-1.2.xsd file:///../../../../resources/ehcache-spring-1.2.xsd file:///../../../../resources/ehcache-spring-1.2.xsd ../../../../resources/ehcache-spring-1.2.xsd file://../../../../resources/ehcache-spring-1.2.xsd file://$HOME/workspace/foo/src/main/resources/ehcache-spring-1.2.xsd file://./src/main/resources/ehcache-spring-1.2.xsd file://../../../../resources/ehcache-spring-1.2.xsd 我似乎也有问题让它从绝对路径引用文件,所以也许有一种不同的方式来引用mac上的文件? 例如以下不起作用: file:///Users/me/workspace/foo/src/main/resources/ehcache-spring-1.2.xsd file:////Users/me/workspace/foo/src/main/resources/ehcache-spring-1.2.xsd file://Users/me/workspace/foo/src/main/resources/ehcache-spring-1.2.xsd

是否可以使用多个ehcache.xml(在不同的项目中,同样的战争)?

我有一个服务项目和一个Web项目。 我需要在两个项目中都有eh-cache。 这个想法是,如果服务项目更新,它的缓存相关更改(如密钥和失效规则)也将可用,而不会对Web项目进行任何更改。 如此独立,服务项目也可以与其他项目一起使用,甚至不知道eh-cache。 此时,我的Web项目也将eh-cache用于自己的目的。 我对eh-cache不太熟悉,我担心这两个项目在部署时可能会发生冲突。 我也没有在eh-cache网站上找到相关信息。 您能否向我提供一些如何最好地配置这两个项目的信息,以便我能达到上述要求? 编辑: 我使用Spring,因此我更愿意将它用于我的缓存管理器。 我在context.xml中为使用ehcache的每个jar使用以下内容,例如对于jar 1,我有: 我有jar子2 那么,两个缓存都会起作用吗? 我担心ehcache:annotation-driven将被最后一次读取上下文覆盖,只有一个缓存可以运行。 我错了,还是错过了什么?

java.lang.NoClassDefFoundError:org / hibernate / cache / EntityRegion配置EHCache

我正在尝试将ehcache (v2.6.0)添加到我的Hibernate 4.1.5.SP1项目中,但有一些配置问题。 具体来说,当我尝试构建我的Hibernate配置时,我收到了java.lang.NoClassDefFoundError : org/hibernate/cache/EntityRegion错误 true net.sf.ehcache.hibernate.EhCacheRegionFactory 这是我的Maven依赖… 4.1.5.SP1 4.3.0.Final 2.6.0 … org.hibernate hibernate-validator ${hibernate.validator.version} org.hibernate hibernate-entitymanager ${hibernate.version} net.sf.ehcache ehcache-core ${ehcacheVersion} 这是我用来配置它的Java代码…… Configuration config = new Configuration() .setProperty(“hibernate.dialect”, “org.hibernate.dialect.HSQLDialect”) .setProperty(“hibernate.connection.driver_class”, “org.hsqldb.jdbcDriver”) .setProperty(“hibernate.connection.url”, “jdbc:hsqldb:mem:myprojectTestDb”) .setProperty(“hibernate.connection.username”, “sa”) .setProperty(“hibernate.connection.password”, “”) .setProperty(“hibernate.connection.pool_size”, “1”) .setProperty(“hibernate.connection.autocommit”, “true”) .setProperty(“hibernate.cache.provider_class”, “org.hibernate.cache.HashtableCacheProvider”) .setProperty(“hibernate.hbm2ddl.auto”, “create-drop”) .setProperty(“hibernate.show_sql”, “true”) .setProperty(“hibernate.current_session_context_class”, “thread”) .setProperty(“hibernate.cache.use_second_level_cache”, “true”) .setProperty(“hibernate.cache.region.factory_class”, “net.sf.ehcache.hibernate.EhCacheRegionFactory”) .addAnnotatedClass(Organization.class) […]

Ehcache磁盘存储不干净关机

我正在使用具有磁盘存储持久性的缓存。 在应用程序的后续重新运行中,我收到以下错误: net.sf.ehcache.store.DiskStore deleteIndexIfCorrupt WARNING: The index for data file MyCache.data is out of date, probably due to an unclean shutdown. Deleting index file MYCache.index 除了在应用程序中的某处显式调用net.sf.ehcache.CacheManager.shutdown()之外,还有什么方法可以解决这个问题吗? 缓存配置: 用于复制问题的代码: import java.util.ArrayList; import java.util.List; import net.sf.ehcache.Cache; import net.sf.ehcache.CacheManager; import net.sf.ehcache.Element; public class CacheTest { static CacheManager manager = new CacheManager(CacheTest.class .getResource(“ehcache.xml”)); static Cache cache; public static void […]