Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在JHipster中禁用ehcache的最佳方法是什么_Java_Mysql_Database_Ehcache_Jhipster - Fatal编程技术网

Java 在JHipster中禁用ehcache的最佳方法是什么

Java 在JHipster中禁用ehcache的最佳方法是什么,java,mysql,database,ehcache,jhipster,Java,Mysql,Database,Ehcache,Jhipster,我希望在生产中使用EHCache,但不希望在开发中使用,因为我在开发中往往会摆弄数据库记录 搜索之后,我遇到的唯一一件事是这个JVM选项完全禁用缓存-Dnet.sf.ehcache.disabled=true,但不知何故,这似乎不是理想的解决方案 最好是在application-dev.yml中有一个选项。我修改了timeToLiveSeconds并将其调低(1),但似乎没有任何效果 我试图像这样在我的REST服务中添加api,但似乎也没有任何效果: /** * GET /clearCach

我希望在生产中使用EHCache,但不希望在开发中使用,因为我在开发中往往会摆弄数据库记录

搜索之后,我遇到的唯一一件事是这个JVM选项完全禁用缓存
-Dnet.sf.ehcache.disabled=true
,但不知何故,这似乎不是理想的解决方案

最好是在application-dev.yml中有一个选项。我修改了timeToLiveSeconds并将其调低(1),但似乎没有任何效果

我试图像这样在我的REST服务中添加api,但似乎也没有任何效果:

/**
 * GET  /clearCache -> Clear Cache
 */
@RequestMapping(value = "/clearCache",
        method = RequestMethod.GET,
        produces = MediaType.APPLICATION_JSON_VALUE)
@Timed
public ResponseEntity<String> clearCache() {
    CacheManager.getInstance().clearAll();
    return new ResponseEntity<String>(HttpStatus.OK);
}
非常感谢您的帮助

以下是我的快速启动完整日志:

[INFO] mypackage.Application - Starting Application on Lenovo-PC with PID 7408 (D:\projects\app\target\classes started by lenovo in D:\projects\app)
[DEBUG] mypackage.Application - Running with Spring Boot v1.2.4.RELEASE, Spring v4.1.6.RELEASE
[DEBUG] org.jboss.logging - Logging Provider: org.jboss.logging.Slf4jLoggerProvider
[DEBUG] mypackage.config.DatabaseConfiguration - Configuring Datasource
[WARN] org.hibernate.cache.ehcache.AbstractEhcacheRegionFactory - HHH020003: Could not find a specific ehcache configuration for cache named [mypackage.Org]; using defaults.
[WARN] org.hibernate.cache.ehcache.AbstractEhcacheRegionFactory - HHH020003: Could not find a specific ehcache configuration for cache named [mypackage.Workflow]; using defaults.
[WARN] org.hibernate.cache.ehcache.AbstractEhcacheRegionFactory - HHH020003: Could not find a specific ehcache configuration for cache named [mypackage.Department]; using defaults.
...
...
...

[DEBUG] mypackage.config.MailConfiguration - Configuring mail server
[INFO] mypackage.Application - Running with Spring profile(s) : [dev, fast]

如果查看CacheConfiguration类,您将看到:

@Profile("!" + Constants.SPRING_PROFILE_FAST)
public class CacheConfiguration {
所以,如果您使用fast配置文件,缓存将被禁用,所以您可以使用此配置文件,或者更改注释以仅在prod配置文件中启用缓存

@Profile(Constants.SPRING_PROFILE_PRODUCTION)
public class CacheConfiguration {
没错,发出警告日志的ehcache代码无论如何都会创建一个缓存,它会为您的3个实体创建缓存:组织、工作流和部门

        if ( cache == null ) {
            LOG.unableToFindEhCacheConfiguration( name );
            manager.addCache( name );
            cache = manager.getEhcache( name );
            LOG.debug( "started EHCache region: " + name );
        }
我不确定缓存是否用于实体,因为我们的配置没有运行,但无论如何,即使警告不令人满意,我们的配置中可能缺少一些东西来避免它


可以吗?

我一直使用
-spring.profiles.active=dev,fast
,但我认为在设置环境标志
-Dnet.sf.ehcache.disabled=true之前,缓存并没有被禁用。我遗漏了什么吗?我尝试了
--spring.profiles.active=dev,fast
,但没有从CacheConfiguration获取“Starting Ehcache”日志记录。您确定在程序args而不是JVM args中传递了profiles选项吗?您是否尝试过使用
mvn-Pfast-spring-boot:run
?我已经编辑了我的原始问题,并使用fast-boot添加了我的日志。您可以看到,虽然“Starting Ehcache”并不存在,但Ehcache仍在发出警告,我认为它正在运行。当我添加特定的JVM arg
-Dnet.sf.ehcache.disabled=true
时,日志的这一部分提到它正在被抑制。编辑的回答要求您创建一个问题当前的jhipster应用程序(3.5.0)不再具有“fast”配置文件,但此提示仍然有效,因为您可以轻松地将概要文件限制添加到配置类中-
        if ( cache == null ) {
            LOG.unableToFindEhCacheConfiguration( name );
            manager.addCache( name );
            cache = manager.getEhcache( name );
            LOG.debug( "started EHCache region: " + name );
        }