2017-07-06 3 views
0

私のアプリケーションを、プレイフレームワーク2.3.9から2.4.6にアップグレードしました。すべて正常に動作していますが、onstart(アプリケーションアプリ)メソッドは2回実行されます。私はonstartメソッドでいくつかのスケジューラーを作成したので、それらも2回実行されています。playframeworkを2.4.6にアップグレードした後にGlobal.javaのonstartメソッドが2回実行される

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", "***", "***", "****") 

注:以下の通りである

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以下のよう

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ファイルがある私はJPAを使用していますプロジェクト。どんな助けも高く評価されます。

+0

それはとにかく廃止予定ですので、それは完全にグローバルを取り除くしようとしている価値があるかもしれません。 – rethab

+0

はい、あなたは正しいです、これは私の将来の計画です。しかし、現時点では、スケジューラーが2回実行されているので、私はこの問題のホットフィックスが必要です。 – gkbstar

答えて

0

私は生産上で同じ問題を抱えていましたが、devモードではありませんでした。

私はherokuで複数のdynosを実行していました.Global.java(およびGlobal.javaからトリガーされたバックグラウンドジョブ)は、私の数のダイノスと同じ回数だけ実行されました。ここで

は一度だけそれを実行する方法についての答えです: Play 2 Heroku startup with multiple dynos

関連する問題