Я новичок в отличных рамках Grails.У нас есть требование, при котором нам необходимо установить соединение с базой данных во время выполнения, поскольку каждый пользователь приложения имеет уникальные учетные данные для получения соединения с БД.Мы обнаружили, что можем использовать предоставленный Spring API UserCredentialsDataSourceAdapter для достижения нашей цели.Но когда мы пытаемся запустить приложение после добавления конфигурации для UserCredentialsDataSourceAdapter, мы получаем следующую ошибку
[main] ERROR context.GrailsContextLoader - Ошибка при выполнении начальной загрузки: Ошибка создания компонента с именем 'messageSource': инициализациябобов не удалось;вложенное исключение: org.springframework.beans.factory.BeanCreationException: ошибка при создании компонента с именем'actionManager ': невозможно разрешить ссылку на компонент' sessionFactory 'при установке свойства компонента' sessionFactory ';вложенное исключение - org.springframework.beans.factory.BeanCreationException: ошибка при создании компонента с именем 'sessionFactory': сбой вызова метода init;вложенное исключение - java.lang.NullPointerException: невозможно получить свойство 'config' для нулевого объекта org.springframework.beans.factory.BeanCreationException: ошибка при создании компонента с именем 'messageSource': инициализация компонента не выполнена;вложенное исключение: org.springframework.beans.factory.BeanCreationException: ошибка при создании компонента с именем'actionManager ': невозможно разрешить ссылку на компонент' sessionFactory 'при установке свойства компонента' sessionFactory ';вложенное исключение - org.springframework.beans.factory.BeanCreationException: ошибка при создании компонента с именем 'sessionFactory': сбой вызова метода init;вложенное исключение: java.lang.NullPointerException: невозможно получить свойство 'config' для нулевого объекта в org.grails.tomcat.TomcatServer.start (TomcatServer.groovy: 212) в grails.web.container.EmbeddableServer $ start.call (неизвестный источник) при _GrailsRun_groovy $ _run_closure5_closure12.doCall (_GrailsRun_groovy: 158) в _GrailsRun_groovy $ _run_closure5_closure12.doCall (_GrailsRun_groovy) в _GrailsSettings_groovy $ _run_closure10.doCall (_GrailsSettings_groovy: 280) в _GrailsSettings_groovy $ _run_closure10.call (_GrailsSettings_groovy) в _GrailsRun_groovy $ _run_closure5.doCall (_GrailsRun_groovy:149) в _GrailsRun_groovy $ _run_closure5.call (_GrailsRun_groovy) при _GrailsRun_groovy.runInline (_GrailsRun_groovy: 116) в _GrailsRun_groovy.this $ 4 $ runInline (_GrailsRun_groovy) при _GrailsRun_groovy $ _run_closure1.doCall (_GrailsRun_groovy: 59) в RunApp $ _run_closure1.doCall (RunApp:33) в gant.Gant $ _dispatch_closure5.doCall (Gant.groovy: 381) в gant.Gant $ _dispatch_closure7.doCall (Gant.groovy: 415) в gant.Gant $ _dispatch_closure7.doCall (Gant.groovy) в gant.Gant.withBuildListeners (Gant.groovy: 427) в gant.Gant.this $ 2 $ с withBuildListeners (Gant.groovy) в gant.Gant $ это $ 2 $ withBuildListeners.callCurrent (неизвестный источник)в gant.Gant.dispatch (Gant.groovy: 415) в gant.Gant.this $ 2 $ рассылка (Gant.groovy) в gant.Gant.invokeMethod (Gant.groovy) в gant.Gant.executeTargets (Gant.groovy: 590) в gant.Gant.executeTargets (Gant.groovy: 589)Вызвано: org.springframework.beans.factory.BeanCreationException: Ошибка при создании компонента с именем'actionManager ': невозможно разрешить ссылку на компонент' sessionFactory 'при установке свойства компонента' sessionFactory '; вложенное исключение - org.springframework.beans.factory.BeanCreationException: ошибка при создании компонента с именем 'sessionFactory': сбой вызова метода init; Вложенное исключение - java.lang.NullPointerException: невозможно получить свойство 'config' для нулевого объекта
... еще 23
Вызвано: org.springframework.beans.factory.BeanCreationException: Ошибка создания компонента с именем 'sessionFactory': сбой вызова метода init; Вложенное исключение - java.lang.NullPointerException: невозможно получить свойство 'config' для нулевого объекта
... еще 23
Причина: java.lang.NullPointerException: Невозможно получить свойство 'config' для нулевого объекта
на Script1.run (Script1.groovy: 1)
... еще 23
мы настроили UserCredentialsDataSourceAdapter в resources.groovy следующим образом
beans = {
targetDataSource(DriverManagerDataSource){
driverClassName= "oracle.jdbc.driver.OracleDriver"
url= "jdbc:oracle:oci:@dbname"
}
dataSource(UserCredentialsDataSourceAdapter){
targetDataSource= ref("targetDataSource")
username = "username"
password = "password"
}
sessionFactory(ConfigurableLocalSessionFactoryBean) {
dataSource = dataSource
hibernateProperties = [ "hibernate.hbm2ddl.auto":"create-drop",
"hibernate.show_sql":true ,
"hibernate.dialect":"org.hibernate.dialect.O racle10gDialect" ]
}
}