Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/365.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在生产环境中未绑定以@play.cache.NamedCache(值=会话缓存)注释的play.cache.CacheApi的实现_Java_Caching_Playframework_Config_Playframework 2.4 - Fatal编程技术网

Java 在生产环境中未绑定以@play.cache.NamedCache(值=会话缓存)注释的play.cache.CacheApi的实现

Java 在生产环境中未绑定以@play.cache.NamedCache(值=会话缓存)注释的play.cache.CacheApi的实现,java,caching,playframework,config,playframework-2.4,Java,Caching,Playframework,Config,Playframework 2.4,我使用activator run在开发模式下使用@NamedCache注释,没有任何问题。我在application.conf文件中将名为play的默认缓存以外的缓存指定为play.cache.bindCaches=[“用户缓存”、“会话缓存”]。这很好,没有任何问题,因为我已经检查了使用CacheManager获取命名缓存 然而,在生产模式中。我正在使用activator dist命令。然后,解压在target\universal\project name地址中创建的快照 java-Dhttp

我使用activator run在开发模式下使用
@NamedCache
注释,没有任何问题。我在application.conf文件中将名为play的默认缓存以外的缓存指定为
play.cache.bindCaches=[“用户缓存”、“会话缓存”]
。这很好,没有任何问题,因为我已经检查了使用CacheManager获取命名缓存

然而,在生产模式中。我正在使用
activator dist
命令。然后,解压在target\universal\project name地址中创建的快照
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
1)未绑定带有@play.cache.NamedCache(值=会话缓存)注释的play.cache.CacheApi的实现。
查找带有@play.cache.NamedCache(值=会话缓存)注释的play.cache.CacheApi时
用于services.space.SessionSpace.cache(SessionSpace.java:19)中的字段
查找services.space.SessionSpace时
用于services.SecurityService.sessionSpace(SecurityService.java:21)中的字段
查找services.SecurityService时出错
用于common.Response.securityService(Response.java:17)中的字段
当定位公共时。响应
对于controllers.BaseController.response(BaseController.java:53)处的字段
定位控制器时。应用程序
用于router.Routes处的参数2。(Routes.scala:60)
定位路由器时。路由
查找play.api.inject.routeProvider时
查找play.api.routing.Router时

在得到这个错误后,我删除了NamedCache并使用了默认缓存。当我这么做的时候,一切都很好。同样,在开发模式下,NamedCache也能正常工作。

我遇到了类似的问题。但在我的例子中,我注入了我在一个项目依赖项中使用的缓存api(它也是由我开发的)。我了解到错误在于,您的项目依赖关系中的任何application.conf都将被覆盖。i、 如果您使用的是在游戏中开发的依赖项,e conf/appliaction.conf将覆盖所有其他application.conf。解决方案: 在依赖项中,所有application.conf必须命名为reference.conf。 您是否在某个依赖项中使用缓存

干杯, 马尼