1

我正在使用 Akka 和 Play2 开发我的应用程序。

当我第一次运行 play2 应用程序~run并进行 GET 操作时,我的自定义 Actor 系统会在 Controller 中创建,它会在 2558 端口上启动一个集群。

如果更改我的代码中的任何内容并使另一个 GET 播放重新编译并按预期重新开始,但 2558 端口被占用并且我有错误:Failed to bind to /127.0.0.1:2558

我不知道如何处理我自己的演员系统关闭以与 play2 一起工作。我试图GlobalSettings在方法中的对象中做到这一点,onStop但没有运气。

4

1 回答 1

1

用于play.api.libs.concurrent.Akka.system获取演员系统。您可以根据需要自定义此演员系统application.conf。Play 会自动为您启动和关闭它。

如果由于某种原因你真的不想使用它(但真的,我想不出你为什么不使用它的任何原因),那么你需要等待actor系统在GlobalSettings.onStop方法中关闭,使用ActorSystem.awaitTermination. 调用shutdown是非阻塞的,所以当 Play 重新启动它时,很可能ActorSystem还没有完全关闭并释放端口。

另外,不要在控制器中创建参与者系统。要么在 中创建它Global,要么实现play.api.Plugin接口并在那里创建一个(后者对于任何有生命周期的东西都是首选)。

于 2014-03-10T12:31:10.437 回答