grails - Convert org.apache.tomcat.jdbc.pool.DataSource to org.apache.commons.dbcp.BasicDataSource -
upgrading grails 2.2.1 2.4.3 else has upgraded fine, having issue tomcat upgrade 7.0.54 getting error of
error initializing application: error creating bean name 'datasourcembean': unsatisfied dependency expressed through constructor argument index 0 of type [org.apache.commons.dbcp.basicdatasource]: not convert constructor argument value of type [org.apache.tomcat.jdbc.pool.datasource] required type [org.apache.commons.dbcp.basicdatasource]: failed convert value of type 'org.apache.tomcat.jdbc.pool.datasource' required type 'org.apache.commons.dbcp.basicdatasource'; nested exception java.lang.illegalstateexception: cannot convert value of type [org.apache.tomcat.jdbc.pool.datasource] required type [org.apache.commons.dbcp.basicdatasource]: no matching editors or conversion strategy found org.springframework.beans.factory.unsatisfieddependencyexception: error creating bean name 'datasourcembean': unsatisfied dependency expressed through constructor argument index 0 of type [org.apache.commons.dbcp.basicdatasource]: not convert constructor argument value of type [org.apache.tomcat.jdbc.pool.datasource] required type [org.apache.commons.dbcp.basicdatasource]: failed convert value of type 'org.apache.tomcat.jdbc.pool.datasource' required type 'org.apache.commons.dbcp.basicdatasource'; nested exception java.lang.illegalstateexception: cannot convert value of type [org.apache.tomcat.jdbc.pool.datasource] required type [org.apache.commons.dbcp.basicdatasource]: no matching editors or conversion strategy found @ org.springframework.beans.factory.support.constructorresolver.createargumentarray(constructorresolver.java:722) @ org.springframework.beans.factory.support.constructorresolver.autowireconstructor(constructorresolver.java:185) @ org.springframework.beans.factory.support.abstractautowirecapablebeanfactory.autowireconstructor(abstractautowirecapablebeanfactory.java:1114) @ org.springframework.beans.factory.support.abstractautowirecapablebeanfactory.createbeaninstance(abstractautowirecapablebeanfactory.java:1017) @ org.springframework.beans.factory.support.abstractautowirecapablebeanfactory.docreatebean(abstractautowirecapablebeanfactory.java:504) @ org.springframework.beans.factory.support.abstractautowirecapablebeanfactory.createbean(abstractautowirecapablebeanfactory.java:475) @ org.springframework.beans.factory.support.abstractbeanfactory$1.getobject(abstractbeanfactory.java:302) @ org.springframework.beans.factory.support.defaultsingletonbeanregistry.getsingleton(defaultsingletonbeanregistry.java:228) @ org.springframework.beans.factory.support.abstractbeanfactory.dogetbean(abstractbeanfactory.java:298) @ org.springframework.beans.factory.support.abstractbeanfactory.getbean(abstractbeanfactory.java:193) @ org.springframework.beans.factory.support.defaultlistablebeanfactory.preinstantiatesingletons(defaultlistablebeanfactory.java:703) @ org.springframework.context.support.abstractapplicationcontext.finishbeanfactoryinitialization(abstractapplicationcontext.java:760) @ org.springframework.context.support.abstractapplicationcontext.refresh(abstractapplicationcontext.java:482) @ org.codehaus.groovy.grails.commons.spring.defaultruntimespringconfiguration.getapplicationcontext(defaultruntimespringconfiguration.java:156) @ org.codehaus.groovy.grails.commons.spring.grailsruntimeconfigurator.initializecontext(grailsruntimeconfigurator.java:188) @ org.codehaus.groovy.grails.commons.spring.grailsruntimeconfigurator.configure(grailsruntimeconfigurator.java:168) @ org.codehaus.groovy.grails.commons.spring.grailsruntimeconfigurator.configure(grailsruntimeconfigurator.java:127) @ org.codehaus.groovy.grails.web.context.grailsconfigutils.configurewebapplicationcontext(grailsconfigutils.java:126) @ org.codehaus.groovy.grails.web.context.grailscontextloaderlistener.initwebapplicationcontext(grailscontextloaderlistener.java:109) @ org.springframework.web.context.contextloaderlistener.contextinitialized(contextloaderlistener.java:106) @ org.apache.catalina.core.standardcontext.listenerstart(standardcontext.java:4973) @ org.apache.catalina.core.standardcontext.startinternal(standardcontext.java:5467) @ org.apache.catalina.util.lifecyclebase.start(lifecyclebase.java:150) @ org.apache.catalina.core.containerbase$startchild.call(containerbase.java:1559) @ org.apache.catalina.core.containerbase$startchild.call(containerbase.java:1549) @ java.util.concurrent.futuretask.run(futuretask.java:262) @ java.util.concurrent.threadpoolexecutor.runworker(threadpoolexecutor.java:1145) @ java.util.concurrent.threadpoolexecutor$worker.run(threadpoolexecutor.java:615) @ java.lang.thread.run(thread.java:745)
the area getting error in has been around while
datasourcembean(com.item.management.datasourcembean, ref('datasourceunproxied'))
the class is:
class datasourcembean { private basicdatasource datasource public datasourcembean(basicdatasource datasource) { this.datasource = datasource }
when change datasource to specific type :
private org.apache.tomcat.jdbc.pool.datasource datasource
everything compiles , tests run fine.
asking when did change? there alternative basicdatasource should using instead?
i found article but, not sure if applies java.lang.classcastexception: org.apache.tomcat.dbcp.dbcp.basicdatasource cannot cast org.apache.tomcat.jdbc.pool.datasource
unless need basicdatasource
(and can't see why would), don't change more specific class, change interface, javax.sql.datasource
. if need particular implementation class, can define own datasource
bean registering org.apache.commons.dbcp.basicdatasource
in resources.groovy
, setting whatever properties needed, e.g.
import org.apache.commons.dbcp.basicdatasource beans = { datasourceunproxied(basicdatasource) { driverclassname = 'foo' username = 'bar' password = 'secret' url = 'the_url' ... } ... }
you can bean registered grails or plugin long use same bean name.
Comments
Post a Comment