2014-04-29 4 views
0

я использую Scala, Play, JDBC создать соединение DB на лету в веб-приложение (вторичное соединение, кроме установленного по умолчанию).Scala + JDBC Driver = не найден после компиляции

Все отлично работает, я загрузить драйвер с Class.forName, но есть маленький и странный вопрос - когда перекомпиляция в SCALA файл, который содержит код, связанные соединения, исключение брошено на следующих запросах от web, этот файл драйвера не найден. Перезапуск сервера воспроизведения исцеляет это, и все работает нормально до тех пор, пока не будет отредактирован файл Scala. & скомпилирован.

Это происходит только при редактировании и компиляции файла, когда приложение просто работает, работает нормально. Это не главная проблема, просто странное поведение.

Спасибо.

ответ

0

в Скале нет необходимости загрузить драйвер, как этот

Class.forName("Driver") 

Это Java-код, в затмении язя просто лестницу открытым конф/application.conf файл и установить драйвер по умолчанию ... как это

db.default.driver="com.mysql.jdbc.Driver" 
db.default1.driver="com.mysql.jdbc.Driver" 
+0

Спасибо за ваш ответ. К сожалению, в этом случае я не могу использовать ** application.conf **, потому что соединение должно создаваться «на лету». Настройки соединения неизвестны до этого момента. Я удалил ** Class.forName **, и на самом деле это не имеет никакого значения, потому что, как вы сказали, он не нужен. – Vilis

1

Использование scalikeJDBC, который является как Scala JDBC CONNECTION БИБЛИОТЕКИ http://scalikeJDBC.org документация хороша

+0

На самом деле я уже использую ScalikeJDBC, но проблема связана только с загрузкой JDBC и драйверов. Никакая абстракция не решит этого. – Vilis

1

У меня были проблемы с SQLite и здесь было мое решение

try { 
    DriverManager.registerDriver(new org.sqlite.JDBC) 
} catch { 
    case e: Exception => //Log your error 
} 

Я получил идею от This bug

имеет что-то делать с тем, когда игра выключается для перекомпиляции ип регистрирует JDBC драйвера, но механизм для автонагрузки драйверов происходит в java-запуске, а не при запуске приложения. Надеюсь это поможет.

Смежные вопросы