Play 2.0 フレームワークで Squeryl ORB を使用しようとしていますが、DB.getConnection()
初期化中に呼び出すと次のようになります。
BadPath: パス パラメータ: 無効なパス ' - defaultdb のデータソースが見つかりませんでした': パス式で許可されていないトークン: '-' (本当に必要な場合は、このトークンを二重引用符で囲むことができます)
データベース構成は次のようになります (conf/application.conf):
db.default.url="jdbc:postgresql://localhost/mydb?user=postgres&password=postgres"
db.default.driver=org.postgresql.Driver
db.default.jndiName=defaultdb
そして初期化:
object Global extends GlobalSettings {
override def onStart(app: Application) {
SessionFactory.externalTransactionManagementAdapter = Some(() =>
Some(new Session(
DB.getConnection("defaultdb", true),
new PostgreSqlAdapter)))
...
これは正しい方法ですか?db.default.jndiName
のパラメータ値として構成値を使用するのは正しいDB.getConnection()
ですか?
または、次のようにする必要がありますか?:
SessionFactory.concreteFactory = Some(() =>
Session.create(
java.sql.DriverManager.getConnection("jdbc:postgresql://..."),
new PostgreSqlAdapter))
これは機能しますが、繰り返しのためにテンプレートで squeryl クエリ オブジェクトを使用することができませんexternalTransactionManagementAdapter
。
アップデート:
次のように修正し、構成DB.getConnection("default", true)
を削除しましたdb.default.jndiName
。これで接続を取得して使用できますが、2回目getConnection()
に呼び出されるとスローされますSQLException: Timed out waiting for a free available connection.
更新 2:
を使用することはできませんでしたがexternalTransactionManagementAdapter
、concreteFactory
以下で説明するようにうまく機能します。