1

私はGroovyGrailsフレームワークの初心者です。各アプリケーションユーザーはdb接続を取得するための一意の資格情報を持っているため、実行時にデータベース接続を確立する必要があるという要件があります。目標を達成するために、Springが提供するAPIUserCredentialsDataSourceAdapterを利用できることがわかりました。ただし、UserCredentialsDataSourceAdapterの構成を追加した後でアプリケーションを実行しようとすると、次のエラーが発生します。


[main] ERROR context.GrailsContextLoader-ブートストラップの実行中にエラーが発生しました:「messageSource」という名前のBeanの作成中にエラーが発生しました:Beanの初期化に失敗しました。ネストされた例外はorg.springframework.beans.factory.BeanCreationExceptionです:「transactionManager」という名前のBeanの作成中にエラーが発生しました:Beanプロパティ「sessionFactory」の設定中にBean「sessionFactory」への参照を解決できません。ネストされた例外はorg.springframework.beans.factory.BeanCreationExceptionです:「sessionFactory」という名前のBeanの作成中にエラーが発生しました:initメソッドの呼び出しに失敗しました。ネストされた例外はjava.lang.NullPointerExceptionです:nullオブジェクトのプロパティ'config'を取得できませんorg.springframework.beans.factory.BeanCreationException:'messageSource'という名前のBeanの作成中にエラーが発生しました:Beanの初期化に失敗しました。ネストされた例外はorgです。springframework.beans.factory.BeanCreationException:「transactionManager」という名前のBeanの作成中にエラーが発生しました:Beanプロパティ「sessionFactory」の設定中にBean「sessionFactory」への参照を解決できません。ネストされた例外はorg.springframework.beans.factory.BeanCreationExceptionです:「sessionFactory」という名前のBeanの作成中にエラーが発生しました:initメソッドの呼び出しに失敗しました。ネストされた例外はjava.lang.NullPointerExceptionです:grails.web.container.EmbeddableServer $ start.call(不明なソース)のorg.grails.tomcat.TomcatServer.start(TomcatServer.groovy:212)でnullオブジェクトのプロパティ'config'を取得できません)at _GrailsRun_groovy $ _run_closure5_closure12.doCall(_GrailsRun_groovy:158)at _GrailsRun_groovy$_run_closure5_closure12。Gant $ _dispatch_closure7.doCall(Gant.groovy)at gant.Gant.withBuildListeners(Gant.groovy:427)at gant.Gant.this $ 2 $ withBuildListeners(Gant.groovy)at gant.Gant $ this $ 2 $ withBuildListeners.callCurrent(Unknown出典)at gant.Gant.dispatch(Gant.groovy:415)at gant.Gant.this $ 2 $ dispatch(Gant.groovy)at gant.Gant.invokeMethod(Gant.groovy)at gant.Gant.executeTargets(Gant.groovy :590)at gant.Gant.executeTargets(Gant.groovy:589)原因:org.springframework.beans.factory.BeanCreationException:「transactionManager」という名前のBeanの作成中にエラーが発生しました:Beanプロパティの設定中にBean「sessionFactory」への参照を解決できません'sessionFactory'; ネストされた例外はorgです。springframework.beans.factory.BeanCreationException:「sessionFactory」という名前のBeanの作成中にエラーが発生しました:initメソッドの呼び出しに失敗しました。ネストされた例外はjava.lang.NullPointerException:nullオブジェクトのプロパティ'config'を取得できません...23 more原因:org.springframework.beans.factory.BeanCreationException:'sessionFactory'という名前のBeanの作成中にエラーが発生しました:initメソッドの呼び出しに失敗しました; ネストされた例外はjava.lang.NullPointerExceptionです:nullオブジェクトのプロパティ'config'を取得できません...23 more 23 more原因:org.springframework.beans.factory.BeanCreationException:「sessionFactory」という名前のBeanの作成中にエラーが発生しました:initメソッドの呼び出しに失敗しました。ネストされた例外はjava.lang.NullPointerExceptionです:nullオブジェクトのプロパティ'config'を取得できません...23 more 23 more原因:org.springframework.beans.factory.BeanCreationException:「sessionFactory」という名前のBeanの作成中にエラーが発生しました:initメソッドの呼び出しに失敗しました。ネストされた例外はjava.lang.NullPointerExceptionです:nullオブジェクトのプロパティ'config'を取得できません...23 more 原因:java.lang.NullPointerException: Script1.run(Script1.groovy:1)でnullオブジェクトのプロパティ'config'を取得できません...23 more


resources.groovyのUserCredentialsDataSourceAdapterを次のように構成しました

     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" ]
            }

}

4

1 に答える 1

0

アプリケーションユーザーとは何か、なぜ複数のアプリケーションをそれぞれ1人のユーザー(データベースユーザー)で使用しないのかという質問がよくわかりません...

Grails を起動するには DataSource が必要です...

または、アプリケーション ユーザーは、アプリにログインしているユーザーです (マルチテナンシー) http://www.grails.org/plugin/multi-tenant

于 2011-10-25T08:16:02.950 に答える