在PROD模式下开始播放2.1时出现ehcache异常

时间:2014-01-19 10:48:04

标签: playframework ehcache

我在我的应用程序中使用播放默认缓存。当我尝试在服务器上使用target / start命令运行我的play 2.1应用程序时,我收到以下错误消息:

net.sf.ehcache.CacheException:如果未在配置中指定默认缓存配置,则无法通过名称添加缓存。请在配置中添加默认缓存配置。

在开发模式下正常工作。有什么地方我需要指定默认缓存吗?

1 个答案:

答案 0 :(得分:2)

您的堆栈跟踪指示从尝试以编程方式创建名为“play”的缓存的Play Framework代码抛出异常。正如EhCache documentation所解释的那样:

  

当您尝试以编程方式按名称CacheManager.add(String name)添加缓存时,CacheManager配置中应存在默认缓存。要修复此错误,请将defaultCache添加到CacheManager的配置中。

此修复非常简单 - 请确保您使用的ehcache.xml文件具有defaultcache元素(您可以在Play 2.1中查看defaultcache元素的内容{{ 3}})。仍需要解决的关键问题是在启动应用程序时使用配置文件:

  • 如果您在应用程序的ehcache.xml目录中包含conf文件,请确保其中包含defaultcache元素。或者,如果您在此文件中没有任何自己的自定义配置,则可以考虑删除它并回退到使用Play的默认配置。

  • 如果您没有自己的ehcache.xml文件,请搜索staged目录中的JAR文件,看看是否包含ehcache.xml文件。

至于为什么错误在某些情况下而不是在其他情况下发生,我会冒险在各种命令之间存在类路径排序差异。这意味着某些命令将选择Play的内部Ehcache配置(服务器然后干净地启动),而其他命令将加载不正确的Ehcache配置文件并发出错误。