gpt4 book ai didi

java - 使用 jmx 在运行时禁用 ehcache

转载 作者:行者123 更新时间:2023-11-30 11:03:30 25 4
gpt4 key购买 nike

我试图在运行时禁用分布式 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 的正确方法吗?

最佳答案

假设一切正常,您在禁用缓存方面所做的看起来不错。

至于是否有缓存对你的应用程序的影响,这不在这个问题的范围内。

关于java - 使用 jmx 在运行时禁用 ehcache,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30351395/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com