在生产版上没有绑定带有@play.cache.NamedCache(value=session-cache)注释的pla



我使用@NamedCache注释没有任何问题在开发模式下使用activator运行。我在application.conf文件中指定了除默认缓存之外的缓存play作为play.cache.bindCaches = ["user-cache", "session-cache"]。这工作得很好,没有任何问题,因为我已经检查了使用CacheManager获得命名缓存。

然而,在生产模式下。我使用activator dist命令。然后,解压缩在targetuniversalproject-name address中创建的已创建快照。之后我就开始吸毒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的并使用默认缓存。当我这样做的时候,一切都很好。同样,在开发模式下,NamedCache按预期工作。

我遇到了类似的问题。但在我的情况下,我正在注入缓存api,我在我的一个项目依赖项中使用(这也是由我开发的)。我了解到错误是任何application.conf中的项目依赖项将被覆盖。也就是说,如果你使用的依赖项是在play中开发的,那么conf/application.conf将覆盖所有其他的application.conf。解决方案:你所有的申请。Confs必须在依赖项中命名为reference.conf。您是否在某个依赖项中使用缓存?

欢呼,摩尼。

最新更新