当前位置: 首页 > 知识库问答 >
问题:

Play Framework 2.6.20 PlayService插件项目应用程序生命周期支持

谷梁襦宗
2023-03-14

我正在试用Play 2.6引入的新PlayService sbt插件(我的确切Play版本是2.6.20),我想将下面链接中提到的应用程序的停止挂钩用于这个基于PlayService插件的Play项目。

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

我的代码如下所示,

@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个错误]正在运行。果心服务器DevServerStart$$不超过1美元。在游戏中重新加载(DevServerStart.scala:186)。果心服务器DevServerStart$$不超过1美元。get(DevServerStart.scala:124)正在运行。果心服务器AkkaHttpServer。HandlerRequest(AkkaHttpServer.scala:241)正在播放。果心服务器AkkaHttpServer$akka的anonfun$createServerBinding$1(AkkaHttpServer.scala:138)。流动实施。熔合。MapAsyncUnordered$$anon$26。akka的onPush(作战规模:1304)。流动实施。熔合。石墨流量计。在akka处理Push(Graphinterpeter.scala:519)。流动实施。熔合。石墨流量计。akka的processEvent(Graphinterpeter.scala:482)。流动实施。熔合。石墨流量计。在akka执行(GraphinterPeter.scala:378)。流动实施。熔合。GraphInterpreterShell。akka的runBatch(ActorGraphInterpreter,scala:588)。流动实施。熔合。GraphInterpreterShell$AsyncInput。由:com引起的执行(ActorGraphTransparer.scala:472)。谷歌。注射CreationException:无法创建喷油器,请参阅以下错误:

1) 没有用于播放的实现。注射ApplicationLifecycle已绑定
定位间隙时。注射com的第一个参数的ApplicationLifecycle。我的公司。ltr.启动。LtrBootStrapper。(LtrBootStrapper.java:22)

这是否意味着PlayService应用程序不支持ApplicationLifecycle?如果是这样的话,那么在PlayService应用程序中,stop-hook等效的替代方案是什么?

提前谢谢。

共有1个答案

红朝
2023-03-14

应用程序生命周期由play提供。注射内置模块。这是由java核心子项目提供的,该子项目自动添加对的依赖项,但不会添加对PlayService的依赖项。

要解决此问题,请显式地将依赖项添加到构建中。sbt,如下所示:

libraryDependencies += javaCore
 类似资料:
  • Django为管理活动提供了一个随时可用的用户界面。 我们都知道管理界面对于Web项目很重要。 Django根据您的项目模型自动生成管理UI。 启动管理界面 Admin界面依赖于django.countrib模块。 要使其正常工作,您需要确保在myproject/settings.py文件的INSTALLED_APPS和MIDDLEWARE_CLASSES元组中导入一些模块。 对于INSTALLE

  • 项目是许多应用程序的总和。 每个应用程序都有一个目标,可以重复使用到另一个项目中,比如网站上的联系表单可以是一个应用程序,并且可以重用给其他人。 将其视为项目的一个模块。 创建一个应用程序 我们假设您在项目文件夹中。 在我们的主“myproject”文件夹中,相同的文件夹然后manage.py - $ python manage.py startapp myapp 你刚刚创建了myapp应用程序

  • The application module lets you manage the life cycle of your NativeScript apps from starting the application to storing user-defined settings. application模块允许你从启动应用到保存用户自定义设置整个过程进行生命周期管理。 Start Appli

  • 本章第一节的内容简单讲解了应用和扩展的区别,本节将为大家讲解应用和扩展的另一大区别,生命周期。 对于扩展来说,如果定义了后台脚本,同时指定persistent属性为true,那么这个扩展只要浏览器运行就会一直运行,除非用户手动去关闭它。如果声明了background权限,则这个扩展会一开机就运行,并且一直运行下去。但是对于应用来说情况会有所不同。 Chrome应用目前不允许使用永久运行的后台脚本(

  • 本文向大家介绍微信小程序(四)应用生命周期详解,包括了微信小程序(四)应用生命周期详解的使用技巧和注意事项,需要的朋友参考一下 App() 函数用来注册一个小程序,注意必须在 app.js 中注册,且不能注册多个。 使用方式也跟Android中的Application中初始化一些全局信息以供使用。 方法: 应用生命周期代码: 相关文章: hello WeApp                   

  • 问题内容: 我目前正在管理AngularJS开发项目。有传言说我们至少需要从当前的1.2升级到AngularJS 1.5。我提出的一项要求是,我必须提供1.5终止支持的证据,但是在有角度的网站上进行了多个小时的搜索和多次Google搜索后却找不到任何终止支持的信息。 关于何时不再为Angular v1.x开发安全补丁和错误修复程序,是否有官方评论? 问题答案: 根据Angular开发团队的说法,当