为什么我的PlayFramework应用程序会超时很长?

我已经创建了一个有效的应用程序,但有时当我更改内容并在浏览器中点击“重新加载”-Button时,应用程序需要永远超时(300000毫秒或5分钟! )。 之后,我在浏览器中收到以下exception:

java.util.concurrent.TimeoutException: Futures timed out after [300000 milliseconds] scala.concurrent.impl.Promise$DefaultPromise.ready(Promise.scala:219) scala.concurrent.impl.Promise$DefaultPromise.result(Promise.scala:223) scala.concurrent.Await$$anonfun$result$1.apply(package.scala:111) scala.concurrent.BlockContext$DefaultBlockContext$.blockOn(BlockContext.scala:53) scala.concurrent.Await$.result(package.scala:111) play.forkrun.ForkRun$$anonfun$askForReload$1.apply(ForkRun.scala:123) play.forkrun.ForkRun$$anonfun$askForReload$1.apply(ForkRun.scala:121) play.runsupport.Reloader.reload(Reloader.scala:295) play.core.ReloadableApplication$$anonfun$get$1.apply(ApplicationProvider.scala:122) play.core.ReloadableApplication$$anonfun$get$1.apply(ApplicationProvider.scalscala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24) scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24) scala.concurrent.forkjoin.ForkJoinTask$AdaptedRunnableAction.exec(ForkJoinTask.java:1361) scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260) scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339) scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979) scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107) 

控制台中的错误:

 [error] application - [info] [info] ! Internal server error, for (GET) [/] -> [info] [info] java.util.concurrent.TimeoutException: Futures timed out after [300000 milliseconds] [info] at scala.concurrent.impl.Promise$DefaultPromise.ready(Promise.scala:219) ~[scala-library-2.11.1.jar:na] [info] at scala.concurrent.impl.Promise$DefaultPromise.result(Promise.scala:223) ~[scala-library-2.11.1.jar:na] [info] at scala.concurrent.Await$$anonfun$result$1.apply(package.scala:111) ~[scala-library-2.11.1.jar:na] [info] at scala.concurrent.BlockContext$DefaultBlockContext$.blockOn(BlockContext.scala:53) ~[scala-library-2.11.1.jar:na] [info] at scala.concurrent.Await$.result(package.scala:111) ~[scala-library-2.11.1.jar:na] 

大多数时候我只是停止激活器(控制台中的CTRL + D),然后通过’激活器运行’重新启动它,然后应用程序工作。

我已尝试使用激活器1.3.2,甚至在不同的计算机上进行离线分发,但无济于事。

我正在使用Scala IDE 4.0(Eclipse)。

[编辑]:我也尝试过activator ~run ,因此将尽快编译更改。

超时更改的示例:

(我只是添加了第一行$document.ready(function()和最后的相应括号)。在我超时之后,我停止了CTRL + D运行的激活器并通过activator run重新启动它。没有改变我的任何代码!当开始完成时,我的程序按预期运行。

   $(document).ready(function() { $('#icon').click(function() { var $this = $(this); $this.css("color","orange"); var num = $('#num'); var currentNumber = num.text().length ? parseInt(num.text()) : 0; num.text(currentNumber + 1); }); });  

我现在经常得到这些超时,比如我90%的代码更改非常烦人。

那么如何解决很长的超时呢?

在我的第一篇文章中搜索编辑时,我似乎自己找到了答案。 我把它写下来,这可能会帮助有类似问题的人:

在激活器1.3.2中,添加了“fork in run”-settting。 因此,激活器UI将fork in run := true的行fork in run := true添加到项目中的build.sbt中。

只需删除,注释掉或fork in run := false中将行更改为fork in run := false 。 这修复了我的超时。

值得一提的是:我的项目编译现在比以前快得多。

我仍然不完全理解为什么会发生超时,如果有人对此有更深入的了解,我会很乐意听到。 但是现在我有一个有效的解决方法。