我正在尝试在运行时禁用分布式ehcache。这是为了便于滚动部署到我们的多个服务器,因此新版本的代码不会干扰正在等待更新代码的服务器。
我上了下一堂课
@Component
@ManagedResource(objectName = "net.sf.ehcache:category=CustomCacheManager,name=cache-ms", description = "Custom managing of ehcache")
public class CacheJmxManagerService {
@Autowired
private CacheManager cacheManager;
@ManagedOperation
public void enableCaches(){
String[] cacheNames = cacheManager.getCacheNames();
for (String cacheName : cacheNames) {
cacheManager.getCache(cacheName).setDisabled(false);
}
}
@ManagedOperation
public void disableCaches(){
String[] cacheNames = cacheManager.getCacheNames();
for (String cacheName : cacheNames) {
cacheManager.getCache(cacheName).setDisabled(true);
}
}
}
<bean id="cacheManager"
class="org.springframework.cache.ehcache.EhCacheManagerFactoryBean">
<property name="configLocation">
<value>${sslsConfPath}ehcache-#{applicationName}.xml</value>
</property>
<property name="shared" value="true"/>
</bean>
Bean是在应用程序上下文中配置ehcache管理器的方式。
但是,当我通过jmx执行它们并运行jmeter测试以测试负载时,结果是相同的。有或没有缓存,我们的通话速度都一样快。这是在Spring中禁用ehcache的正确方法吗?
假设一切正常,关于禁用缓存,您所做的一切看起来不错。
至于是否具有缓存对您的应用程序的影响,这超出了此问题的范围。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句