这就是我运行junit测试时发生的情况。。。
Another CacheManager with same name 'cacheManager' already exists in the same VM. Please
provide unique names for each CacheManager in the config or do one of following:
1. Use one of the CacheManager.create() static factory methods to reuse same
CacheManager with same name or create one if necessary
2. Shutdown the earlier cacheManager before creating new one with same name.
The source of the existing CacheManager is:
DefaultConfigurationSource [ ehcache.xml or ehcache-failsafe.xml ]
这一例外背后的原因是什么。是否有多个cacheManager同时运行?
这就是我使用Sping 3.1.1配置cachManager的方式。它明确地将cacheManager的范围设置为“singleton”
<ehcache:annotation-driven />
<bean
id="cacheManager"
class="org.springframework.cache.ehcache.EhCacheManagerFactoryBean"
scope="singleton"
/>
电子缓存。xml看起来像
<ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="http://ehcache.org/ehcache.xsd"
updateCheck="false"
maxBytesLocalHeap="100M"
name="cacheManager"
>
....
</ehcache>
终于上我的课了
@Component
public class BookingCache implements CacheWrapper<String, BookingUIBean> {
@Autowired
private CacheManager ehCacheManager;
....
}
我非常确定我的代码库中只有一个cacheManager。其他东西可能正在运行第n个实例。
您的问题是在Spring测试框架中构建的上下文加载优化。Spring(默认情况下)不会在测试类完成后破坏上下文,希望其他测试类可以重用它(而不是从头开始创建)。
您可以使用@DirtiesContext覆盖此默认值,或者如果使用maven,则可以将surefire forkMode设置为“始终”,并为每个测试类创建一个新的VM。
我在使用JPA(2.0)、Hibernate(3.6.4)和Spring(3.2.4)进行集成测试时也遇到了同样的问题。使用以下Hibernate配置解决了该问题:
<property name="hibernate.cache.region.factory_class" value="net.sf.ehcache.hibernate.SingletonEhCacheRegionFactory"/>
而不是用
<property name="hibernate.cache.region.factory_class" value="net.sf.ehcache.hibernate.EhCacheRegionFactory"/>
您的EhCacheManagerFactoryBean可能是一个单例,但它正在构建多个CacheManager并试图给它们相同的名称。这违反了Ehache2.5语义学。
2.5版之前的Ehacache版本允许在JVM中存在任意数量的具有相同名称(相同配置资源)的CacheManager。
Ehcache 2.5及更高版本不允许同一JVM中存在多个同名的CacheManager。CacheManager()构造函数创建非单例CacheManager可能会违反此规则
通过将shared属性设置为true,告诉工厂bean在JVM中创建CacheManager的共享实例。
<bean id="cacheManager"
class="org.springframework.cache.ehcache.EhCacheManagerFactoryBean"
p:shared="true"/>
似乎有另一个进程正在加载缓存,但无法定位这个(如果错误没有告诉我谎言)。它唯一告诉我的是,我有另一个缓存从一个名为InputStreamConfigurationSource的类开始??? 有人遇到过这个错误吗??? 我在用 Spring3 泽西1.6/1.7 ehCache 2.6 StackTrace Spring配置 网页xml 缓存文件 文件服务类 JSONendpoint
我正在尝试将EhCache配置为在启用Apache Shiro的Web服务中处理授权缓存。目前我得到了以下例外: org.apache.shiro.cache.CacheException:net.sf.ehcache.CacheException:同一VM中已存在另一个未命名的CacheManager。请为配置中的每个CacheManager提供唯一名称,或执行以下操作之一: 使用CacheMa
这是网络。xml 当我检查日志时,我发现应用程序上下文被初始化了两次。我只是通过禁用dispatcher servlet的启动加载来验证它。当我禁用dispatcher servlet时,我发现异常不会在启动时出现。但它发生在我第一次尝试攻击任何控制器类时。 我在为什么Spring MVC需要至少两个上下文中发现了一些类似的问题? 在下面的链接中提到,对于Ehache2.5及更高版本,不允许同一J
问题内容: 这是我运行junit测试时发生的情况… 异常背后的原因是什么?可以同时运行1个以上的cacheManager吗? 这就是我使用Sping 3.1.1配置cachManager的方式。它将cacheManager的范围明确设置为“单例” The ehcache.xml looks like Finally my class 我非常确定我在代码库中只处理一个cacheManager。其他一
问题内容: 在Bruce Eckel的“ Thinking In Java,第四版”的第428页(有关类型信息的章节)中,具有以下示例: 也许我有点累,但是我看不到add()方法中对add()的调用是如何工作的。我一直认为它应该有一个引用,或者是一个静态方法(并且我在ArrayList或List中找不到静态add())。我想念什么? 我只是为自己测试,发现这可行: 问题答案: Java为这样的方法