Play Framework 2.6.20 Плагин PlayService Project Проект ApplicationLifecycle Поддержка - PullRequest
0 голосов
/ 14 декабря 2018

Я пробовал новый плагин PlayService sbt, представленный в Play 2.6 (моя точная версия Play - 2.6.20), и я хочу использовать стоп-лок приложения, как упомянуто в приведенной ниже ссылке, с этим плагином PlayService на основе Play.project.

https://www.playframework.com/documentation/2.6.x/JavaDependencyInjection#Stopping/cleaning-up

Мой код выглядит следующим образом:

@Singleton
public class LtrBootStrapper {

    @Inject
    public LtrBootStrapper(ApplicationLifecycle applicationLifecycle) {
        //Other functionalities

        //Actual components to stop inside stop hook to be added later on
        applicationLifecycle.addStopHook(() -> CompletableFuture.completedFuture(null));
    } 
}

Однако, когда я запускаю приложение, оно не запускается со следующим исключением.

1 ошибка] в play.core.server.DevServerStart $$ anon $ 1.reload (DevServerStart.scala: 186) в play.core.server.DevServerStart $$ anon $ 1.get (DevServerStart.scala: 124) at play.core.server.AkkaHttpServer.handleRequest (AkkaHttpServer.scala: 241) на play.core.server.AkkaHttpServer. $ Anonfun $ createServerBinding $ 1 (AkkaHttpServer.scala: 138) atk.MapAsyncUnordered $$ anon $ 26.onPush (Ops.scala: 1304) в akka.stream.impl.fusing.GraphInterpreter.processPush (GraphInterpreter.scala: 519) в akka.stream.impl.fusing.GraphInterpreter.processEvent (GraphInterpreter.scala:482) наkka.stream.impl.fusing.GraphInterpreter.execute (GraphInterpreter.scala: 378) в akka.stream.impl.fusing.GraphInterpreterShell.runBatch (ActorGraphInterpreter.scala: 588) в akka.stream.impl.fusing.GraphInterpreterSputyn $.execute (ActorGraphInterpreter.scala: 472) Причина: com.google.inject.CreationException: невозможно создать инжектор, см. следующие ошибки:

1) Нет реализации для play.inject.ApplicationLifecycle был привязан.
при поиске play.inject.ApplicationLifecycle для 1-го параметра com.mycompany.ltr.startup.LtrBootStrapper. (LtrBootStrapper.java:22)

Означает ли это, что приложения PlayServiceне поддерживает ApplicationLifecycle?Если да, то каков альтернативный вариант для стоп-хука в приложениях PlayService?

Заранее спасибо.

1 Ответ

0 голосов
/ 14 декабря 2018

ApplicationLifecycle предоставляется play.inject.BuiltInModule.Это обеспечивается подпроектом java-core , который PlayMinimalJavaPlayJava) автоматически добавляет зависимость, но PlayService этого не делает.

Чтобы исправить это, явно добавьте зависимость к вашему build.sbt, например:

libraryDependencies += javaCore
...