0

Play を 2.5 バージョンにアップグレードした後、プロダクション モードでプロジェクトを実行しようとすると、この問題に直面します。このバージョンでは、プールを手動で初期化する必要があるようですScalikeJDBC: 接続プールはまだ初期化されていません 。このクラスを追加しました:

import play.api.Logger
import scalikejdbc._
import scalikejdbc.config._

class DbInitializer {
    DBs.setupAll()
    Logger.debug("DB initialized")
}

私のモジュールでは、それを EagerSingleton としてマークします。

class GlobalModule extends AbstractModule {
  def configure() = {
    bind(classOf[DbInitializer]).asEagerSingleton()
  }
}

プロジェクトを本番環境で実行すると、次のように表示されます。

[情報] アプリケーション - データソース 'default' のプールを作成しています [情報] padDefaultDBApi - データベース [デフォルト] jdbc:postgresql://localhost:5432/inetshop に接続 [デバッグ] アプリケーション - [デバッグ] アプリケーション - DB が初期化されました おっと、開始できませんサーバー。com.google.inject.CreationException: インジェクタを作成できません。次のエラーを参照してください:

1) コンストラクターの注入エラー、java.lang.IllegalStateException: 接続プールはまだ初期化されていません。(name:'default) at controllers.Application.(Application.scala:20)

したがって、私の Initializer は正常に実行されますが、まだこの問題に直面しています。これを修正するには助けが必要です。

4

1 に答える 1