2016-10-13 2 views
0

В настоящее время я работаю над обновлением зимует от 3,6 до 5.2.3, и я застрял на Ehcache, я используюзимуют тест EHCache неудачи

hibernate-core-5.2.3.Final.jar 
hibernate-ehcache-5.2.3.Final.jar 
hibernate-jpa-2.1-1.0.0.jar 
ehcache-2.10.2.jar 

проблема, когда я запускаю тестовый случай индивидуален, тест пройдет успешно, но когда я запускаю тестовый набор, он будет полностью не в состоянии каждый случай, и я настроен как:

config.setProperty(Environment.CACHE_REGION_FACTORY, "org.hibernate.cache.ehcache.EhCacheRegionFactory"); 

здесь один пример трассировки стека:

org.hibernate.service.spi.ServiceException: Unable to create requested service [org.hibernate.engine.spi.CacheImplementor] 
    at org.hibernate.service.internal.AbstractServiceRegistryImpl.createService(AbstractServiceRegistryImpl.java:267) 
    at org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:231) 
    at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:210) 
    at org.hibernate.service.internal.SessionFactoryServiceRegistryImpl.getService(SessionFactoryServiceRegistryImpl.java:77) 
    at org.hibernate.internal.SessionFactoryImpl.<init>(SessionFactoryImpl.java:240) 
    at org.hibernate.boot.internal.SessionFactoryBuilderImpl.build(SessionFactoryBuilderImpl.java:493) 
    at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:710) 
    at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:726) 
    at com.rtrms.persistence.hibernate.HibernateRepositoryTest.buildSessionFactory(HibernateRepositoryTest.java:583) 
    at com.rtrms.persistence.RepositoryTest.testSavingADependentSecurityDoesNotRefreshThatSecurityFromTheDatabase(RepositoryTest.java:893) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) 
    at java.lang.reflect.Method.invoke(Unknown Source) 
    at junit.framework.TestCase.runTest(TestCase.java:164) 
    at junit.framework.TestCase.runBare(TestCase.java:130) 
    at junit.framework.TestResult$1.protect(TestResult.java:106) 
    at junit.framework.TestResult.runProtected(TestResult.java:124) 
    at junit.framework.TestResult.run(TestResult.java:109) 
    at junit.framework.TestCase.run(TestCase.java:120) 
    at junit.framework.TestSuite.runTest(TestSuite.java:230) 
    at junit.framework.TestSuite.run(TestSuite.java:225) 
    at org.eclipse.jdt.internal.junit.runner.junit3.JUnit3TestReference.run(JUnit3TestReference.java:121) 
    at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38) 
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:459) 
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:678) 
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:382) 
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:192) 
Caused by: org.hibernate.cache.CacheException: net.sf.ehcache.CacheException: Another CacheManager with same name 'yourCacheManager' 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 ] 
    at org.hibernate.cache.ehcache.EhCacheRegionFactory.start(EhCacheRegionFactory.java:90) 
    at org.hibernate.cache.spi.RegionFactory.start(RegionFactory.java:63) 
    at org.hibernate.internal.CacheImpl.<init>(CacheImpl.java:71) 
    at org.hibernate.engine.spi.CacheInitiator.initiateService(CacheInitiator.java:28) 
    at org.hibernate.engine.spi.CacheInitiator.initiateService(CacheInitiator.java:20) 
    at org.hibernate.service.internal.SessionFactoryServiceRegistryImpl.initiateService(SessionFactoryServiceRegistryImpl.java:58) 
    at org.hibernate.service.internal.AbstractServiceRegistryImpl.createService(AbstractServiceRegistryImpl.java:257) 
    ... 27 more 
Caused by: net.sf.ehcache.CacheException: Another CacheManager with same name 'yourCacheManager' 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 ] 
    at net.sf.ehcache.CacheManager.assertNoCacheManagerExistsWithSameName(CacheManager.java:628) 
    at net.sf.ehcache.CacheManager.init(CacheManager.java:392) 
    at net.sf.ehcache.CacheManager.<init>(CacheManager.java:270) 
    at org.hibernate.cache.ehcache.EhCacheRegionFactory.start(EhCacheRegionFactory.java:69) 
    ... 33 more 

ответ

0

Ehcache 2.x будет отслеживать открытые CacheManager s и предотвратит одновременное открытие двух одинаковых имен.

Таким образом, наиболее вероятной причиной ошибки в вашем тесте является то, что вы не очищаете ресурсы. Поскольку Hibernate управляет CacheManager, вам, вероятно, нужно закрыть SessionFactory между тестами или открыть один для всех тестов.

+0

все сессии были закрыты, во всяком случае, все наши тесты, в которых используется ehcache, использовались ehcache-core-2.2.0.jar и hibernate 3, и все они выполнялись успешно, так как я перешел из спящего режима 3 в 5.2 .3 и добавил hibernate-ehcache, изменения config.setProperty (Environment.CACHE_REGION_FACTORY, "org.hibernate.cache.ehcache.EhCacheRegionFactory"); – user2995031

+0

все сеансовые функции были закрыты, во всяком случае, весь наш тест, который использует ehcache, использует ehcache-core-2.2.0.jar и hibernate 3, и все они выполнялись успешно, так как я перешел из спящего режима 3 в 5.2.3 , и добавил hibernate-ehcache.jar, изменения из config.setProperty (Environment.CACHE_PROVIDER, "org.hibernate.cache.HashtableCacheProvider"); to config.setProperty (Environment.CACHE_REGION_FACTORY, "org.hibernate.cache.ehcache.EhCacheRegionFactory"); ошибка возникает. – user2995031

Смежные вопросы