首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Play框架:每次代码热编译时都会出现EhCache问题

Play框架:每次代码热编译时都会出现EhCache问题
EN

Stack Overflow用户
提问于 2016-08-19 13:44:30
回答 2查看 1.4K关注 0票数 4

在Play 2.5.3中,使用Scala:

我使用缓存作为一个模块,每次我更改代码,然后刷新我的浏览器,在重新编译后,我得到了以下问题:

代码语言:javascript
复制
[TechnicalException: com.google.inject.ProvisionException: Unable to provision, see the following errors:

1) Error in custom provider, play.api.cache.EhCacheExistsException: An EhCache instance with name 'play' already exists.

This usually indicates that multiple instances of a dependent component (e.g. a Play application) have been started at the same time.

  at play.api.cache.EhCacheModule.play$api$cache$EhCacheModule$$bindCache$1(Cache.scala:184):
Binding(interface net.sf.ehcache.Ehcache qualified with QualifierInstance(@play.cache.NamedCache(value=play)) to ProviderTarget(play.api.cache.NamedEhCacheProvider@2dfe19e7)) (via modules: com.google.inject.util.Modules$OverrideModule -> play.api.inject.guice.GuiceableModuleConversions$$anon$1)
  while locating net.sf.ehcache.Ehcache annotated with @play.cache.NamedCache(value=play)
  at play.api.cache.EhCacheModule.play$api$cache$EhCacheModule$$bindCache$1(Cache.scala:185):
Binding(interface play.api.cache.CacheApi qualified with QualifierInstance(@play.cache.NamedCache(value=play)) to ProviderTarget(play.api.cache.NamedCacheApiProvider@6f7b9e34)) (via modules: com.google.inject.util.Modules$OverrideModule -> play.api.inject.guice.GuiceableModuleConversions$$anon$1)
  while locating play.api.cache.CacheApi annotated with @play.cache.NamedCache(value=play)
  while locating play.api.cache.CacheApi
    for parameter 0 at play.cache.DefaultCacheApi.<init>(DefaultCacheApi.java:20)
  at play.cache.DefaultCacheApi.class(DefaultCacheApi.java:20)
  while locating play.cache.DefaultCacheApi
  while locating play.cache.CacheApi

1 error]

我对一些角色使用缓存(命名缓存,而不是默认的play)。我该如何解决这个问题呢?

谢谢!

EN

回答 2

Stack Overflow用户

发布于 2016-08-20 03:04:03

您是否禁用了EHCache?

application.conf中:

代码语言:javascript
复制
# disable default Play framework cache plugin
play.modules.disabled += "play.api.cache.EhCacheModule"
票数 0
EN

Stack Overflow用户

发布于 2019-11-21 09:28:00

我在更新的post EhCache instance with name 'play' already exists中找到了一个解决方案。这只是一个变通方法,但它是有效的,关键部分是:

代码语言:javascript
复制
 lifecycle.addStopHook { () =>
    logger.info("CacheInstance stopped")
    Future.successful(CacheManager.getInstance().shutdown())
  }

设置完整代码的帖子。

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

https://stackoverflow.com/questions/39031863

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档