1
votes

I am a newbie to groovy Grails frameworks. We have a requirement wherein we need to establish the database connection at runtime since each application user has unique credentials for getting the db connection. We found that we could make use of Spring provided API UserCredentialsDataSourceAdapter for achieving our goal. But when we try running the application after adding the configuration for UserCredentialsDataSourceAdapter, we get the following error


[main] ERROR context.GrailsContextLoader - Error executing bootstraps: Error creating bean with name 'messageSource': Initialization of bean failed; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'transactionManager': Cannot resolve reference to bean 'sessionFactory' while setting bean property 'sessionFactory'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory': Invocation of init method failed; nested exception is java.lang.NullPointerException: Cannot get property 'config' on null object org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'messageSource': Initialization of bean failed; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'transactionManager': Cannot resolve reference to bean 'sessionFactory' while setting bean property 'sessionFactory'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory': Invocation of init method failed; nested exception is java.lang.NullPointerException: Cannot get property 'config' on null object at org.grails.tomcat.TomcatServer.start(TomcatServer.groovy:212) at grails.web.container.EmbeddableServer$start.call(Unknown Source) at _GrailsRun_groovy$_run_closure5_closure12.doCall(_GrailsRun_groovy:158) at _GrailsRun_groovy$_run_closure5_closure12.doCall(_GrailsRun_groovy) at _GrailsSettings_groovy$_run_closure10.doCall(_GrailsSettings_groovy:280) at _GrailsSettings_groovy$_run_closure10.call(_GrailsSettings_groovy) at _GrailsRun_groovy$_run_closure5.doCall(_GrailsRun_groovy:149) at _GrailsRun_groovy$_run_closure5.call(_GrailsRun_groovy) at _GrailsRun_groovy.runInline(_GrailsRun_groovy:116) at _GrailsRun_groovy.this$4$runInline(_GrailsRun_groovy) at _GrailsRun_groovy$_run_closure1.doCall(_GrailsRun_groovy:59) at RunApp$_run_closure1.doCall(RunApp:33) at gant.Gant$_dispatch_closure5.doCall(Gant.groovy:381) at gant.Gant$_dispatch_closure7.doCall(Gant.groovy:415) at gant.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 Source) 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) Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'transactionManager': Cannot resolve reference to bean 'sessionFactory' while setting bean property 'sessionFactory'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory': Invocation of init method failed; nested exception is java.lang.NullPointerException: Cannot get property 'config' on null object ... 23 more Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory': Invocation of init method failed; nested exception is java.lang.NullPointerException: Cannot get property 'config' on null object ... 23 more Caused by: java.lang.NullPointerException: Cannot get property 'config' on null object at Script1.run(Script1.groovy:1) ... 23 more


we have configured the UserCredentialsDataSourceAdapter in the resources.groovy as follows

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

}

1
Are you using any extra plugins? what is Script1.groovy?Igor Artamonov
Also, it's best to paste the full stack trace (you should be able to find it in 'target/stacktrace.log') into something like pastebin.com so we can look at it there.Peter Ledbrook

1 Answers

0
votes

I do not really understand the question, what it's an application user, why do not have multiple applications with one single user each (database user)....

Grails does need a DataSource to startup...

Or an application user is somebody that is logging in the app (Multitenancy) http://www.grails.org/plugin/multi-tenant