Java 我应该将ehcache.xml放在项目中的什么位置?

Java 我应该将ehcache.xml放在项目中的什么位置?,java,ehcache,Java,Ehcache,我最近开始使用EHCache进行缓存。我知道如何在Java代码中使用它,但我仍然不确定配置文件 所以,我有一个ear项目,它包括几个war模块。如果所有这些模块都使用ehcache,我应该为每个模块在WEB-INF中放置一份ehcache.xml的副本,还是将其放在ear文件本身的某个地方(可能是META-INF?) 此外,从文档中还不清楚,是否所有这些模块都将使用相同的缓存实例?应用程序部署在glassfish上,EHCache是否会为ear中的每个模块运行相同的缓存,或者每个模块在这样使用时

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

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

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

CacheManager singleton = CacheManager.create();

没有硬性规定可以放入ehcache配置文件。 但是,就我个人而言,我将我的ehcache配置文件与所有其他配置一起保存 和属性文件

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

  • 根据ehcache.xml文件。没有规则规定你将把这个文件放在哪里,但是如果你在一个大项目上工作,我假设你有几个概要文件(例如,QA、开发、产品)。由于ehcache可能因配置文件而异(例如,如果您启用了ehcache jms复制),您可以在那里设置不同的jms服务器IP,或者缓存区域中的对象数量可能不同,因此我建议将其放在具有配置文件相关文件的位置(例如web.xml、log4j.properties)。然后,如果在单独的xml文件中有上下文配置,如:
  • 
    上下文配置位置
    /WEB-INF/context-config.xml
    
    然后,您可以在该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自动连接到类,这将非常有意义。希望我能帮助你

    CacheManager manager = new CacheManager(EHCACHE_CONFIG);
    
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>/WEB-INF/context-config.xml</param-value>
    </context-param>
    
    <import resource="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>