Как интегрировать Scala Squeryl ORB с фреймворком play 2.0?

Я пытаюсь использовать Squeryl ORB с платформой play 2.0, но при вызове DB.getConnection()во время инициализации я получаю:

BadPath: параметр пути: неверный путь '- не удалось найти источник данных для defaultdb': Token не разрешено в выражении пути: '-' (вы можете заключить этот токен в двойные кавычки, если вы действительно хотите его здесь)

Конфигурация базы данных выглядит следующим образом (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.получить соединение () ?

Или это должно быть сделано так?:

  SessionFactory.concreteFactory = Some(() =>
    Session.create(
      java.sql.DriverManager.getConnection("jdbc:postgresql://..."),
      new PostgreSqlAdapter))

Это работает, но тогда я не могу использовать объекты запроса squeryl в шаблоне для итерации, что, как я надеялся, будет возможно с externalTransactionManagementAdapter.

Обновление:

Я исправил следующее: DB.getConnection("default", true)и удалил конфигурацию db.default.jndiName. Благодаря этому я могу получить и использовать соединение, но при втором вызове getConnection()он выдает SQLException: истекло время ожидания свободного доступного соединения.

Обновление 2:

Мне не удалось использовать externalTransactionManagementAdapter, но concreteFactoryработает хорошо, как описано ниже.

11
задан Roar Skullestad 15 March 2012 в 14:28
поделиться