Play2 GlobalSettings.getControllerInstance并发问题

时间:2014-03-09 02:57:32

标签: concurrency playframework-2.0

我遇到了一个从我的Play全局对象中获取控制器的并发问题。

环境:

  • Play2.2.1 for Java
  • Spring托管控制器/操作
  • 覆盖getControllerInstance的全局对象

我同时发送两个请求,并注意到有时请求最终得到错误的控制器 例如:

请求X获得控制器X
请求X得到控制器X
请求X获取Controller X

请求Y获取Controller Y //新请求获取其控制器

请求X得到控制器Y //新的x请求得到y的控制器不应该发生。

请求Y得到控制器Y

请求Y得到控制器Y

每个请求都有一个不同的调度程序线程。

这是一个重现问题的github应用https://github.com/SaadKhawaja/play2-concurrency-test

请阅读自述文件,其中包含重现问题的步骤。

感谢任何帮助。

由于

1 个答案:

答案 0 :(得分:1)

问题是你的行动是单身,但需要原型作用。 Play将控制器注入到每个请求的操作中,因此单例操作将导致并发问题。