plugin - Obteniendo Java Play framework para almacenar en caché las entidades de Ebean usando memcached
ebean plugin play framework (1)
Estoy ejecutando Java Play framework versión v2.6.1 y utilizando Ebean para la persistencia. Mi intención es hacer que el almacenamiento en caché de bean se play2-memcached complemento play2-memcached .
¿Qué he hecho hasta ahora?
- instaló
memcached
en localhost y habilitó el registro detallado. - reemplazó la dependencia de
cacheApi
concacheApi
enlibraryDependencies
enbuild.sbt
(esto, supongo, debería eliminar Ehcache por completo). - agregado
"com.github.mumoshu" %% "play2-memcached-play26" % "0.9.0",
alibraryDependencies
enbuild.sbt
- se agregó
"Spy Repository" at "http://files.couchbase.com/maven2",
a losresolvers
enbuild.sbt
- Se agregaron las siguientes entradas a la aplicación 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"
-
@com.avaje.ebean.annotation.Cache
mi entidad y la hice implementarSerializable
, también agregó@com.avaje.ebean.annotation.Cache
anotación. - registro de SQL habilitado
¿Que funciona?
- La entidad de carga con
Entity.find.byId(id)
da como resultado SQLSELECT
. Al cargarlo nuevamente con diferentes resultados de solicitud no hay sentencias SQL. - abriendo el navegador a localhost: el 11211 muestra errores en syslog; esto es para asegurarse de que memcached se está ejecutando y puedo ver las solicitudes que aparecen
- haciendo volcado de memoria puedo ver que se cargan las clases relacionadas de caché de
com.github.mumoshu
.
¿Qué no funciona?
- Espero que los objetos en caché se envíen a memcached (en lectura y / o actualización). Esto no está sucediendo, no hay registros de memcached relacionados con esto. Tampoco hay conexiones al puerto 11211 si ejecuto
netstat -na | grep 11211
netstat -na | grep 11211
.
¿Hay algo que me falta?
También es necesario vincular javax.caching.CacheManager
. Añadir
libraryDependencies += jcache
a su build.sbt
.
Si está utilizando Guice, también debe agregar lo siguiente para las anotaciones de Java:
libraryDependencies += "org.jsr107.ri" % "cache-annotations-ri-guice" % "1.0.0"
Puede encontrar más información en la sección "Soporte de JCache" de la documentación de Playframework here .