播放2.4 - 在热切的单例模块中使用Ebean

时间:2016-01-07 15:53:18

标签: playframework java-8 ebean playframework-2.4

我有一个问题。

我正在使用Play框架和Ebean。我试图将我的应用程序移植到Play 2.4,我正在尝试使用Play中引入的依赖注入技术。

在以前的版本中,我使用GlobalSettings.onStart()在应用程序启动后初始化一些东西(类似cron的服务)。在2.4我试图使用依赖注入框架实现“onStart”进程作为急切加载的单例。

一般来说,它正在发挥作用。但是,有时候,我在启动应用程序时会收到NullPointerException。从堆栈跟踪,我可以假设,访问数据库时发生异常(EbeanServer在那段时间内为null)。所以我假设,Ebean没有正确启动,因为在申请开始之前,热切的单身人士已经开始了。好的,我将Play的应用程序和数据库对象注入到热切的单例构造函数中,以便及时启动所有内容。

结果......不稳定。有时应用程序启动正常,有时它落在相同的NullPointerException。

看起来数据库有时不能及时启动或者是什么?或者我可能需要注入一些其他Ebean对象才能启动数据库?

1 个答案:

答案 0 :(得分:3)

好的,我明白了。

我不得不注入play.db.ebean.EbeanConfigplay.api.db.evolutions.DynamicEvolutions,现在Ebean作为我渴望的单身人士的依赖开始了。

正如您在此处所看到的那样,这些是在加载play-ebean插件时注入的两个类https://github.com/playframework/play-ebean/blob/master/play-ebean/src/main/java/play/db/ebean/EbeanModule.java