我使用的是@NamedCache注释,在开发模式下使用的是激活器run,没有任何问题。除了默认缓存之外,我还在文件中指定了名为application.conf play的缓存为play.cache.bindCaches = ["user-cache", "session-cache"]。这很好,没有任何问题,因为我已经检查了如何使用CacheManager获得命名缓存。
然而,在生产模式下。我正在使用activator dist命令。然后,解压缩创建在目标\通用\项目名称address.After中创建的快照,我正在使用java -Dhttp.port=9000 -Dconfig.resource=application.conf -cp "../lib/*;../conf" play.core.server.ProdServerStart命令在生产模式下启动应用程序。
当我在生产中使用@NamedCache注释时,它会产生错误:
1) No implementation for play.cache.CacheApi annotated with @play.cache.NamedCache(value=session-cache) was bound.
while locating play.cache.CacheApi annotated with @play.cache.NamedCache(value=session-cache)
for field at services.space.SessionSpace.cache(SessionSpace.java:19)
while locating services.space.SessionSpace
for field at services.SecurityService.sessionSpace(SecurityService.java:21)
while locating services.SecurityService
for field at common.Response.securityService(Response.java:17)
while locating common.Response
for field at controllers.BaseController.response(BaseController.java:53)
while locating controllers.Application
for parameter 2 at router.Routes.<init>(Routes.scala:60)
while locating router.Routes
while locating play.api.inject.RoutesProvider
while locating play.api.routing.Router获得此错误后,我删除了NamedCache,并使用了默认缓存。当我这么做的时候,一切都很好。同样,在dev模式下,NamedCache按预期工作。
发布于 2016-01-15 03:40:54
我也遇到了类似的问题。但在我的例子中,我注入了在我的一个项目依赖项中使用的缓存api (这也是由我开发的)。我了解到,错误是项目依赖项中的任何application.conf都将被覆盖。即conf/appliaction.conf将覆盖所有其他应用程序。如果您使用的是在游戏中开发的依赖项,则为conf。解决方案:必须在依赖项中将所有application.confs命名为reference.conf。您是否在依赖项中使用缓存?
干杯,玛尼。
https://stackoverflow.com/questions/32471761
复制相似问题