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 は正常に実行されますが、まだこの問題に直面しています。これを修正するには助けが必要です。