我应该在哪里把ehcache.xml放在我的项目中?

时间:2015-08-26 05:43:30

标签: java ehcache

我最近开始使用EHCache进行缓存。我知道,如何在Java代码中使用它,但我仍然不确定配置文件。

所以,我有一个耳朵项目,包括几个战争模块。如果所有这些模块都使用ehcache,我应该在WEB-INF中为每个模块放置一个ehcache.xml副本,还是将它放在ear文件本身(META-INF可能?)

此外,文档中还不清楚所有这些模块是否都使用相同的缓存实例?该应用程序部署在glassfish,EHCache将为每个模块运行相同的缓存,或者每个模块在使用时将获得他自己的单例实例:

CacheManager singleton = CacheManager.create();

2 个答案:

答案 0 :(得分:2)

放入您的ehcache配置文件没有硬性规定。 但是,我个人保持我的ehcache配置文件与所有其他配置 和属性文件。

例如,我将在一些静态最终变量中存储我的ehcache config xml文件的路径,(有助于保持路径可配置)

private static final String EHCACHE_CONFIG = "<path to this file>/ehcache.xml";

然后当我初始化缓存管理器时,我提供了配置路径 file作为参数

CacheManager manager = new CacheManager(EHCACHE_CONFIG);

答案 1 :(得分:1)

  1. 根据 ehcache.xml 文件。没有规则可以放置此文件,但如果您正在处理一个大项目,我认为您有几个配置文件(例如QA,DEV,PROD)。由于ehcache可能因配置文件而异(例如,如果启用了ehcache jms复制),您可以在那里设置不同的JMS服务器IP,或者缓存区域中的对象数量可能会有所不同,所以我建议您放置您的配置文件 - 依赖文件(例如web.xml,log4j.properties)。然后,如果您在单独的xml文件中进行上下文配置,例如:
  2. <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>/WEB-INF/context-config.xml</param-value>
    </context-param>
    

    然后您可以添加 context-config.xml 文件:

    <import resource="context-config.xml"/>
    

    context-config.xml 文件可能包含cacheManager bean的描述,您可以自动装配在哪里需要它。所以 context-config.xml 可能如下所示:

    <?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.2.xsd">
    
            <bean id="cacheManager" class="org.springframework.cache.ehcache.EhCacheManagerFactoryBean">
                <property name="configLocation" value="classpath:ehcache.xml"/>
            </bean>
    
        </beans>
    

    回答你的第二个问题。从我的例子中,它将取决于你将如何定义这个bean,你可以将它定义为单例,然后你将只有一个cacheManager实例,或者你可以将实例化留给Spring。 在我看来,你可以使用通用逻辑将cacheManager自动装配到类中,用于缓存失效或缓存&#34;创建&#34;这将很有意义。希望我帮助过你。