Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/359.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将playframework升级到2.4.6后,两次执行Global.java的onstart方法_Java_Jpa_Playframework_Scheduler_Sbt Plugin - Fatal编程技术网

将playframework升级到2.4.6后,两次执行Global.java的onstart方法

将playframework升级到2.4.6后,两次执行Global.java的onstart方法,java,jpa,playframework,scheduler,sbt-plugin,Java,Jpa,Playframework,Scheduler,Sbt Plugin,我刚刚将我的应用程序从play framework 2.3.9升级到2.4.6。一切正常,但onstart(应用程序应用程序)方法执行了两次。由于我在onstart方法中创建了一些调度程序,它们也被执行了两次 Global.java public class Global extends GlobalSettings { public void onStart(Application app) { Logger.info("Application has started");

我刚刚将我的应用程序从play framework 2.3.9升级到2.4.6。一切正常,但onstart(应用程序应用程序)方法执行了两次。由于我在onstart方法中创建了一些调度程序,它们也被执行了两次

Global.java

public class Global extends GlobalSettings {

public void onStart(Application app) {
    Logger.info("Application has started");
    JPA.withTransaction(() -> {
        if (ConfigHelper.getGlobalValue("install").equalsIgnoreCase("xyz")) {
            Logger.info("Starting pqr scheduler");
            ActorRef myActor = Akka.system().actorOf(
                    Props.create(PQR.class));
            FiniteDuration delay = FiniteDuration.create(0, TimeUnit.SECONDS);
            FiniteDuration frequency = FiniteDuration.create(10, TimeUnit.MINUTES);
            Akka.system()
                    .scheduler()
                    .schedule(delay, frequency, myActor, "start", Akka.system().dispatcher(), myActor);
        }

            });
}


public void onStop(Application app) {
    Logger.info("Application shutdown...");
}


}
plugin.sbt文件如下所示

logLevel := Level.Warn


resolvers += "Typesafe repository" at "https://repo.typesafe.com/typesafe/releases/"

addSbtPlugin("com.typesafe.play" % "sbt-plugin" % "2.4.6")
addSbtPlugin("de.johoop" % "jacoco4sbt" % "2.1.6")

addSbtPlugin("com.typesafe.sbt" % "sbt-play-ebean" % "2.0.0")
addSbtPlugin("com.typesafe.sbt" % "sbt-play-enhancer" % "1.1.0")


addSbtPlugin("com.typesafe.sbt" % "sbt-rjs" % "1.0.1")

addSbtPlugin("net.ground5hark.sbt" % "sbt-css-compress" % "0.1.3")

addSbtPlugin("net.ground5hark.sbt" % "sbt-closure" % "0.1.3")

addSbtPlugin("com.typesafe.sbt" % "sbt-digest" % "1.1.0")

addSbtPlugin("com.typesafe.sbt" % "sbt-gzip" % "1.0.0")
build.sbt如下所示:

name := "project name"

version := "1.0-SNAPSHOT"

lazy val root = (project in file(".")).enablePlugins(PlayJava)

scalaVersion := "2.11.7"

libraryDependencies ++= Seq(
  javaJdbc, javaJpa, cache, javaWs,
  "org.hibernate" % "hibernate-entitymanager" % "4.3.9.Final",
  "mysql" % "mysql-connector-java" % "5.1.35",
  "com.amazonaws" % "aws-java-sdk-ses" % "1.9.38",
  "com.amazonaws" % "aws-java-sdk-s3" % "1.9.38",
  "org.freemarker" % "freemarker" % "2.3.22"
)

resolvers += "Sonatype" at "url"

credentials += Credentials("Repository Manager", "***", "***", "****")

注意:我在项目中使用jpa。任何帮助都将不胜感激。

我在生产上遇到了同样的问题,而不是在开发模式上

我在heroku的多个dynos上运行生产,Global.java(以及由Global.java触发的后台作业)的执行次数与我的dynos数量一样多

以下是关于如何只执行一次的答案:

我在生产上遇到了同样的问题,而不是在开发模式上

我在heroku的多个dynos上运行生产,Global.java(以及由Global.java触发的后台作业)的执行次数与我的dynos数量一样多

以下是关于如何只执行一次的答案:

可能值得一试,因为它已经被弃用了。是的,你是对的,这是我未来的计划。但目前我需要一个解决这个问题的热修复程序,因为有两个调度程序被执行。可能值得尝试完全摆脱全局调度程序,因为它已经被弃用了。是的,你是对的,这是我未来的计划。但目前我需要一个解决这个问题的热修复程序,因为有调度程序执行了两次。