让Java Play框架使用memcached缓存Ebean实体

19

我正在运行Java Play框架版本v2.6.1,并使用Ebean进行持久化。我的意图是使用play2-memcached插件来启用bean缓存

到目前为止,我做了什么?

  • 在本地主机上安装了memcached并启用了详细日志记录。
  • build.sbt中将ehcache依赖项替换为cacheApi(我想这个操作应该完全删除Ehcache)。
  • build.sbt中的libraryDependencies中添加了"com.github.mumoshu" %% "play2-memcached-play26" % "0.9.0"
  • build.sbt中的resolvers中添加了"Spy Repository" at "http://files.couchbase.com/maven2"
  • 在应用程序conf中添加了以下条目:

play.modules.disabled += "play.api.cache.ehcache.EhCacheModule" play.modules.enabled+="com.github.mumoshu.play2.memcached.MemcachedModule" play.cache.defaultCache=default play.cache.bindCaches=["db-cache", "user-cache", "session-cache"] memcached.host="127.0.0.1:11211"

  • 我将实体转换为Serializable,并添加了@com.avaje.ebean.annotation.Cache注释。
  • 启用了SQL日志记录。

哪些工作正常?

  • 使用Entity.find.byId(id)加载实体会产生SQL SELECT语句。使用不同的请求再次加载它将不会产生SQL语句。
  • 打开浏览器到localhost:11211会在syslog中显示错误--这是为了确保memcached正在运行,并且我可以看到请求出现。
  • 制作内存转储时,我可以看到来自com.github.mumoshu的缓存相关类已加载。

哪些不起作用?

  • 我期望缓存的对象在读取和/或更新时被发送到memcached。但事实并非如此——没有与此相关的memcached日志。如果运行netstat -na | grep 11211,也没有任何连接到端口11211。

我是否遗漏了什么?


你尝试过使用CacheStrategy注解而不是Cache注解吗?这里讲解了CacheStrategy注解的使用:http://ebean-orm.github.io/docs/features/l2caching/using-bean-cache - FrancisA
@CacheStrategy 被重命名为 @Cache。https://github.com/ebean-orm/ebean/issues/684 - mindas
1个回答

1
您还需要绑定javax.caching.CacheManager。 请添加。
libraryDependencies += jcache

将以下内容添加到您的build.sbt文件中。

如果您正在使用Guice,则还需要添加以下内容以支持Java注释:

libraryDependencies += "org.jsr107.ri" % "cache-annotations-ri-guice" % "1.0.0"

更多信息可以在Playframework文档的“JCache支持”部分这里找到。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接