Я использую Play Framework 2.5.10 с sbt-play-ebean 3.0.0.
Моя проблема
Мне нужно настроить акторы Akka для каждого объекта из одной из моих моделей при запуске приложения. Единственный официальный способ сделать это — зарегистрировать модуль запуска. Но иногда сервер Ebean по умолчанию еще не инициализирован, когда вызывается модуль запуска.
Мое уродливое решение
Стартовый модуль:
public class StartupModule extends AbstractModule implements AkkaGuiceSupport {
@Override
protected void configure() {
bindActor(MainActor.class, "main-actor");
}
}
Конструктор класса MainActor:
@Inject
public MainActor(ActorSystem system) {
this.system = system;
boolean ebeanReady = false;
EbeanServer ebeanServer = null;
do {
try {
ebeanServer = Ebean.getDefaultServer();
} catch (PersistenceException e) {
Logger.error("Ebean not ready!");
}
if (ebeanServer != null) {
ebeanReady = true;
Logger.info("Ebean ready!");
Ebean.runCacheWarming();
}
} while (!ebeanReady);
for (Model model : Model.find.all()) {
foo(model);
}
}
Есть ли лучший способ сделать это без попытки грубой силы, пока сервер Ebean не будет инициализирован?