播放2.4 cacheApi(EhCache)在激活器重新加载后从磁盘获取缓存值

时间:2015-09-24 18:25:02

标签: playframework ehcache

我在Play 2.4中遇到了EhCache的问题,当我将对象添加到缓存(磁盘持久性)并尝试读取一切都很好。但是当我通过更改配置或代码中的某些内容来导致重新加载时。无法读取价值。

github项目的链接https://github.com/aswarcewicz/cache-test

控制器代码:

class CacheController @Inject()(cacheApi: CacheApi) extends Controller {
  implicit val vFormat = Json.format[ValueObject]
  implicit val rFormat = Json.format[Response]

  val key = "key"
  val valueToTest = ValueObject("test1", "test2")


  def value(): Action[AnyContent] = Action.async {
    Future {
      val withCast = cacheApi.get[ValueObject](key)
      val withoutCast = cacheApi.get(key).toString

      Ok(Json.toJson(Response(withCast, withoutCast)))
    }
  }

  def setValue(): Action[AnyContent] = Action.async {
    Future {
      cacheApi.set(key, valueToTest)

      Ok("value set")
    }
  }
}

// value object to store in cache
case class ValueObject(field1: String, field2: String)

// object for response
case class Response(withCast: Option[ValueObject], withoutCast: String)

重现步骤:  1.通过打开http://localhost:9000/set添加要缓存的内容  2.通过打开http://localhost:9000/get来获取缓存中的上一个对象结果是=> { “withCast”:{ “字段1”: “测试1”, “FIELD2”: “TEST2”}, “withoutCast”: “一些(的ValueObject(TEST1,TEST2))”}  3.更改代码或配置中的内容以导致重新加载播放  4.再次打开http://localhost:9000/get从磁盘读取缓存对象,结果是=> { “withoutCast”: “一些(的ValueObject(TEST1,TEST2))”}

0 个答案:

没有答案