Мы использовали Dropwizard в версии 1.3.13. Вместе с этим мы реализовали автоматизированные задачи с помощью солнечных часов и солнечных часов dropwizard в версии 1.3.1.
Большинству наших работ необходим доступ к базе данных. Поэтому мы реализовали метод doRun для солнечных часов и добавили аннотацию UnitOfWork. Это сработало довольно хорошо.
Через несколько дней go мы решили перейти на dropwizard 2.0.2. Все работает, кроме рабочих мест. Задания все еще выполняются, но UnitOfWork больше не работает. Мы делаем части базы данных логики c с DAO. Каждый DAO расширяется от AbstractDAO dropwizard-hibernate также в версии 2.0.2.
Но каждый раз, когда DAO пытаются получить доступ к базе данных, мы получаем исключение «Нет привязки к сеансу». Мы внедряем sessionFactory, которая нужна AbstractDAO, через внедрение зависимостей, и это работает довольно хорошо. Но мы не можем понять, как заставить DAO работать снова. Также мы используем последнюю версию kotlin. Вот пример кода, который работает в нашем сервисе:
@SimpleTrigger(repeatInterval = 1, timeUnit = TimeUnit.MINUTES)
open class DummyJob : SomeAbstractJobThatExtendsFromSundialJob() {
@Inject
lateinit var dao: SomeDAO
@UnitOfWork
override fun run() {
val entity = SomeEntity()
dao.save(entity)
}
}
class SomeDAO @Inject constructor(sessionFactory: SessionFactory): AbstractDAO<SomeEntity>(sessionFactory) {
fun save(contentModule: ContentModule) {
persist(contentModule)
}
}
во время сохранения или выбирает таким же образом, что мы всегда получаем «сессия не связана в данный момент». Событие, запускающее сеанс вручную с внедренным sessionFactory, не работает.
Есть идеи?