Voici ce qui se passe lorsque je lance mes tests 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 ]
Quelle est la raison de cette exception ? Pourrait-il y avoir plus d'un cacheManager fonctionnant simultanément ?
Voici comment j'ai configuré le cacheManager en utilisant Sping 3.1.1. Il définit explicitement la portée du cacheManager à "singleton".
<ehcache:annotation-driven />
<bean
id="cacheManager"
class="org.springframework.cache.ehcache.EhCacheManagerFactoryBean"
scope="singleton"
/>
Le ehcache.xml ressemble à
<ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="http://ehcache.org/ehcache.xsd"
updateCheck="false"
maxBytesLocalHeap="100M"
name="cacheManager"
>
....
</ehcache>
Enfin ma classe
@Component
public class BookingCache implements CacheWrapper<String, BookingUIBean> {
@Autowired
private CacheManager ehCacheManager;
....
}
Je suis certain de n'avoir affaire qu'à un seul cacheManager dans ma base de code. Quelque chose d'autre est probablement en train d'exécuter la n-ième instance.
4 votes
J'ai vu le même problème avec ehCache 2.5 ou plus. L'utilisation de la version 2.4.7 ne cause pas ce problème, mais il serait bon de savoir comment rendre la version 2.5 compatible avec junit.
1 votes
Merci. Je suis revenu à la version 2.4.7, qui fonctionne bien pour l'instant. Il y a également un article de blog qui traite des solutions de contournement possibles (bien qu'aucune d'entre elles ne semble être très attrayante). norrisshelton.wordpress.com/2012/03/08/
0 votes
La solution de Norris Shelton fonctionne pour moi ( norrisshelton.wordpress.com/2012/03/08/ )
0 votes
Cette solution ne semble pas fonctionner pour moi, j'utilise pourtant testNG. J'obtiens toujours "Un autre CacheManager portant le même nom 'myCacheManager' existe déjà dans la même VM" :(
0 votes
Je crois que [ici][1] résout également le problème. [1] : stackoverflow.com/questions/11139653/