我试图在运行时禁用分布式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的正确方法吗?
答案 0 :(得分:1)
假设一切正常,你所做的事情在禁用缓存方面看起来很好。
至于是否对您的应用程序使用缓存的影响,这超出了本问题的范围。