Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >名为“play”的EhCache实例已经存在

名为“play”的EhCache实例已经存在
EN

Stack Overflow用户
提问于 2017-04-05 15:34:50
回答 6查看 3.1K关注 0票数 2

我在使用异步 couchdatabase java驱动程序时,遇到了Play framework默认缓存(EHCache)的问题。在热重新加载时播放崩溃,错误如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Error in custom provider, play.api.cache.EhCacheExistsException: An EhCache instance with name 'play' already exists.

我发现这可能不仅适用于couchdatabase驱动程序,而且也适用于其他一些场景,比如EUOCrov7M

EN

回答 6

Stack Overflow用户

发布于 2017-04-05 15:34:50

我想出了一个解决方案-强制停止钩上的高速缓存关闭。它可以在项目中的一个现有模块中完成,例如:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
lifecycle.addStopHook(() -> {
  ...
  CacheManager.getInstance().shutdown();
  ...
});

还可以创建特殊的“修复”模块:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
package fixes;

import java.util.concurrent.CompletableFuture;

import javax.inject.Inject;
import javax.inject.Singleton;

import com.google.inject.AbstractModule;

import net.sf.ehcache.CacheManager;
import play.Logger;
import play.Logger.ALogger;
import play.inject.ApplicationLifecycle;

/**
 * Fix for the hot reloading cache issue.
 * "Error in custom provider, play.api.cache.EhCacheExistsException: An EhCache instance with name 'play' already exists."
 *
 */
public class CacheFix  extends AbstractModule{  
    @Override
    protected void configure() {
        bind(CacheFixInstance.class).asEagerSingleton();        
    }
}


/**
 * Only stop hook
 */
@Singleton
class CacheFixInstance {    
    private static ALogger logger = Logger.of(CacheFixInstance.class);

    @Inject
    public CacheFixInstance(ApplicationLifecycle lifecycle) {
        lifecycle.addStopHook(() -> {

            // Force cache to stop.
            CacheManager.getInstance().shutdown();
            logger.debug("Cache has been shutdown");

            // Nothing to return.
            return CompletableFuture.completedFuture(null);
        });
    }
}

application.conf中:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
enabled += fixes.CacheFix
票数 4
EN

Stack Overflow用户

发布于 2017-07-27 06:49:51

如果有些人看了一下快速的复制修复,这里是我从Andriy的答案翻译出来的scala版本。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
package utils

import javax.inject.{Inject, Singleton}

import com.google.inject.AbstractModule
import net.sf.ehcache.CacheManager
import play.api.Logger
import play.api.inject.ApplicationLifecycle

import scala.concurrent.{ExecutionContext, Future}

/**
  * Fix for the hot reloading cache issue.
  * "Error in custom provider, play.api.cache.EhCacheExistsException: An EhCache instance with name 'play' already exists."
  *
  */
class CacheHotReloadFix extends AbstractModule {
  override protected def configure(): Unit = {
    bind(classOf[CacheHotReloadFixInstance]).asEagerSingleton()
  }
}

@Singleton
class CacheHotReloadFixInstance @Inject() (lifecycle: ApplicationLifecycle, implicit val executionContext: ExecutionContext) {

  private val logger = Logger(this.getClass)

  lifecycle.addStopHook { () =>
    logger.debug("Forching ehcach to stop before play reloads")
    // Force cache to stop.
    Future(CacheManager.getInstance().shutdown())
  }
}
票数 1
EN

Stack Overflow用户

发布于 2018-01-05 12:08:44

如果在运行测试用例时遇到问题(其中将有多个Applicaiton),则可以使用SyncCacheApiAsyncCacheApi的虚拟实现,并在通过provideApplication()创建Application时覆盖绑定。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    @Override
    protected Application provideApplication() {
Application application = new GuiceApplicationBuilder().configure(testConfig)
                        .disable(EhCacheModule.class)
    .overrides(bind(SyncCacheApi.class).to(FakeSyncCacheApi.class))
                        .bindings(new MyModule())
                        .in(new File(".")).build();
     return application;
}

而样本FakeSyncCacheApi应该类似于

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
@Singleton
public class FakeSyncCacheApi implements SyncCacheApi {

    private LRUMap cache = new LRUMap();

    @Override
    public <T> T get(String key) {
        return (T) cache.get(key);
    }

    @Override
    public <T> T getOrElseUpdate(String key, Callable<T> block, int expiration) {
        return getOrElseUpdate(key, block);
    }

    @Override
    public <T> T getOrElseUpdate(String key, Callable<T> block) {
        T value = (T) cache.get(key);
        if (value == null) {
            try {
                value = block.call();
            } catch (Exception e) {

            }
            cache.put(key, value);
        }
        return value;
    }

    @Override
    public void set(String key, Object value, int expiration) {
        cache.put(key, value);
    }

    @Override
    public void set(String key, Object value) {
        cache.put(key, value);
    }

    @Override
    public void remove(String key) {
        cache.remove(key);
    }
}

这里的想法是禁用EhCache模块并拥有我们自己的虚拟实现。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43243293

复制
相关文章
如何在Java中处理JSON
New 一个 ObjectMapper对象,后续将利用这个ObjectMapper对象来进行一系列的操作。
泰坦HW
2020/07/22
1.5K0
MySQL 8.0 新特性:多值索引 --如何给JSON数组添加索引(三)
上一篇文章《MySQL如何给JSON列添加索引(二)》中,我们介绍了如何给JSON列添加索引,那么接下来,我们看下如何给JSON数组添加索引?
SEian.G
2021/07/07
14.7K1
java json数组转json对象_json对象数组
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
全栈程序员站长
2022/09/30
10K0
java json数组转json对象_json对象数组
vue遍历数组中的数组_vue数组转json
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
全栈程序员站长
2022/11/03
3.8K0
js 数组转json,json转数组[js 数组与json 互相转换]
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/151825.html原文链接:https://javaforall.cn
全栈程序员站长
2022/06/24
12K0
如何在MySQL中搜索JSON数据
从MySQL 5.7.8开始,MySQL支持本机JSON数据类型。在本教程中,我们将学习如何在MySQL中搜索JSON数据。
Lemon黄
2020/04/14
5.4K0
如何在CDH中使用Solr对HDFS中的JSON数据建立全文索引
温馨提示:要看高清无码套图,请使用手机打开并单击图片放大查看。 Fayson的github:https://github.com/fayson/cdhproject 提示:代码块部分可以左右滑动查看噢 1.文档编写目的 ---- Solr是一个高性能,采用Java开发,基于Lucene的全文搜索服务器。同时对其进行了扩展,提供了比Lucene更为丰富的查询语言,同时实现了可配置、可扩展并对查询性能进行了优化,并且提供了一个完善的功能管理界面,是一款非常优秀的全文搜索引擎。SolrCloud是Sol
Fayson
2018/07/12
6K0
[PHP] php中的索引数组和数组顺序问题
先上结论 , php的索引数组不是传统的从0开始的整数索引数组 , 而是一个关联数组 , 是一个有序的键值对 ,这个序就是定义时候的顺序
唯一Chat
2021/04/25
9.3K0
XML转成Json,数组转成Json,Json转成数组
1、数据交互经常用到XML或者Json,其中Json数据居多(优点不多说) 2、ZendFrameWork中如何将XML转换成Json以及数组和Json转换 直接上例子: $arr = array(‘status’ => 1, ‘info’ => ‘json测试’, ‘data’ => array(‘name’ => ‘用户名’, ‘password’ => ‘blog.phpfs.com’)); //数组转Json $json = Zend_Json::encode($arr);//$json =
苦咖啡
2018/05/08
5.2K0
JSON 数组
JSON 中数组值必须是合法的 JSON 数据类型(字符串, 数字, 对象, 数组, 布尔值或 null)。
陈不成i
2021/07/14
1.7K0
数组->Json
if(!$this->validate()) return false; $price_detail_1 = []; $price_detail = []; $price_detail_1[]['detail_name'] = $this->attributes['detail_name']; $price_detail_1[]['detail_price'] = $this->attributes['detail_price']; $price_detail_1[]['detail_unit'] = $t
botkenni
2022/01/10
1.1K0
取Json中的数组进行遍历
废话不多说,直接上代码  测试: String test = "{"list":[{"id":1,"qty":20,"type":"测试","time":"2022-08-02"},{"id":2,"qty":10,"type":"测试","time":"2022-08-02"},{"id":3,"qty":17,"type":"测试","time":"2022-08-02"}]}" JSONObject obj = JSONObject.fromObject(test); Object object
用户10175992
2022/11/15
4.3K0
java中数组转成list_java数组转json
1. 使用Arrays.asList生成的list是定长的,无法增加或删除元素,调用add或remove方法会抛出UnsupportedOperationException异常
全栈程序员站长
2022/09/25
1.3K0
javascript中json对象json数组json字符串互转及取值
今天用到了json数组和json对象和json类型字符串之间互转及取值,记录一下:
kirin
2020/10/30
4.8K0
php 数组转json对象 和json 数组
php中数组转json的规则是:当没有指定索引(0~n)时会转换为json数组,而指定了索引会转换为json对象。
全栈程序员站长
2022/06/24
6.4K0
js 数组转json和json转数组
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/151869.html原文链接:https://javaforall.cn
全栈程序员站长
2022/06/24
8K0
json字符串数组转json数组
当需要把一串字符串转成一个json 数组 ,并遍历其中的内容时。 首先要导入 net.sf.json.JSONArray和net.sf.json.JSONObject 两个jar 包
全栈程序员站长
2022/06/24
5.5K0
比 Elasticsearch 更快!RediSearch + RedisJSON = 王炸!
首先介绍下RedisMod这个东西,它是一系列Redis的增强模块。有了RedisMod的支持,Redis的功能将变得非常强大。目前RedisMod中包含了如下增强模块:
macrozheng
2022/04/12
1.5K0
比 Elasticsearch 更快!RediSearch + RedisJSON = 王炸!
点击加载更多

相似问题

在RediSearch中搜索多个索引

12

如何在Redisearch中删除索引中的所有文档?

131

rediSearch不能在db != 0上创建索引?

114

如何在RediSearch中使用@符号?

232

如何在RediSearch中存储日期/时间

10
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文