使用jmx在运行时禁用ehcache

时间:2015-05-20 13:39:20

标签: java spring ehcache

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

1 个答案:

答案 0 :(得分:1)

假设一切正常,你所做的事情在禁用缓存方面看起来很好。

至于是否对您的应用程序使用缓存的影响,这超出了本问题的范围。