Quartz Error: No Suitable driver -


i have used quartz jobs in web application. working fine when used quartz 1.6.5 teradata database version 13.10.

i faced frequent deadlock issues in quartz older version. so, upgraded version quartz2.2.1. working fine when used quartz 2.2.1 teradata database version 13.10.

later faced weird charset issue in teradata 13.10, upgraded teradata 14.0.

now, faced weird problem, when used quartz 2.2.1 teradata database version 14.0

we got following exception,

info >2014-03-20 10:35:34,541 com.mchange.v2.log.mlog[main]: mlog clients using log4j logging. info >2014-03-20 10:35:35,007 com.mchange.v2.c3p0.c3p0registry[main]: initializing c3p0-0.9.1 [built 16-january-2007 14:46:42; debug? true; trace: 10] info >2014-03-20 10:35:35,504 com.mchange.v2.c3p0.impl.abstractpoolbackeddatasource[main]: initializing c3p0 pool... com.mchange.v2.c3p0.combopooleddatasource [ acquireincrement -> 3, acquireretryattempts -> 30, acquireretrydelay -> 1000, autocommitonclose -> false, automatictesttable -> null, breakafteracquirefailure -> false, checkouttimeout -> 0, connectioncustomizerclassname -> null, connectiontesterclassname -> com.mchange.v2.c3p0.impl.defaultconnectiontester, datasourcename -> 30b5x8901q4ns4b1b241po|1b7bf86, debugunreturnedconnectionstacktraces -> false, description -> null, driverclass -> com.objectriver.jdbc.driver.l2pdriver, factoryclasslocation -> null, forceignoreunresolvedtransactions -> false, identitytoken -> 30b5x8901q4ns4b1b241po|1b7bf86, idleconnectiontestperiod -> 0, initialpoolsize -> 3, jdbcurl -> jdbc:teradata://10.219.82.10/database=t01dgf0_q,charset=utf8,tmode=tera, lastacquisitionfailuredefaultuser -> null, maxadministrativetasktime -> 0, maxconnectionage -> 0, maxidletime -> 0, maxidletimeexcessconnections -> 0, maxpoolsize -> 10, maxstatements -> 0, maxstatementsperconnection -> 120, minpoolsize -> 1, numhelperthreads -> 3, numthreadsawaitingcheckoutdefaultuser -> 0, preferredtestquery -> null, properties -> {user=******, password=******}, propertycycle -> 0, testconnectiononcheckin -> false, testconnectiononcheckout -> false, unreturnedconnectiontimeout -> 0, usestraditionalreflectiveproxies -> false ] warn >2014-03-20 10:36:04,519 com.mchange.v2.resourcepool.basicresourcepool[com.mchange.v2.async.threadpoolasynchronousrunner$poolthread-#0]: com.mchange.v2.resourcepool.basicresourcepool$acquiretask@18837f1 -- acquisition attempt failed!!! clearing pending acquires. while trying acquire needed new resource, failed succeed more maximum number of allowed acquisition attempts (30). last acquisition attempt exception: java.sql.sqlexception: no suitable driver @ java.sql.drivermanager.getdriver(drivermanager.java:264) @ com.mchange.v2.c3p0.drivermanagerdatasource.driver(drivermanagerdatasource.java:224) @ com.mchange.v2.c3p0.drivermanagerdatasource.getconnection(drivermanagerdatasource.java:135) @ com.mchange.v2.c3p0.wrapperconnectionpooldatasource.getpooledconnection(wrapperconnectionpooldatasource.java:182) @ com.mchange.v2.c3p0.wrapperconnectionpooldatasource.getpooledconnection(wrapperconnectionpooldatasource.java:171) @ com.mchange.v2.c3p0.impl.c3p0pooledconnectionpool$1pooledconnectionresourcepoolmanager.acquireresource(c3p0pooledconnectionpool.java:137) @ com.mchange.v2.resourcepool.basicresourcepool.doacquire(basicresourcepool.java:1014) @ com.mchange.v2.resourcepool.basicresourcepool.access$800(basicresourcepool.java:32) @ com.mchange.v2.resourcepool.basicresourcepool$acquiretask.run(basicresourcepool.java:1810) @ com.mchange.v2.async.threadpoolasynchronousrunner$poolthread.run(threadpoolasynchronousrunner.java:547) info >2014-03-20 10:36:05,903 com.ssc.faw.common.logmanager[gencache]: gencache.worker(1) created warn >2014-03-20 10:36:06,657 com.mchange.v2.resourcepool.basicresourcepool[com.mchange.v2.async.threadpoolasynchronousrunner$poolthread-#2]: com.mchange.v2.resourcepool.basicresourcepool$acquiretask@150b45a -- acquisition attempt failed!!! clearing pending acquires. while trying acquire needed new resource, failed succeed more maximum number of allowed acquisition attempts (30). last acquisition attempt exception: java.sql.sqlexception: no suitable driver @ java.sql.drivermanager.getdriver(drivermanager.java:264) @ com.mchange.v2.c3p0.drivermanagerdatasource.driver(drivermanagerdatasource.java:224) @ com.mchange.v2.c3p0.drivermanagerdatasource.getconnection(drivermanagerdatasource.java:135) @ com.mchange.v2.c3p0.wrapperconnectionpooldatasource.getpooledconnection(wrapperconnectionpooldatasource.java:182) @ com.mchange.v2.c3p0.wrapperconnectionpooldatasource.getpooledconnection(wrapperconnectionpooldatasource.java:171) @ com.mchange.v2.c3p0.impl.c3p0pooledconnectionpool$1pooledconnectionresourcepoolmanager.acquireresource(c3p0pooledconnectionpool.java:137) @ com.mchange.v2.resourcepool.basicresourcepool.doacquire(basicresourcepool.java:1014) @ com.mchange.v2.resourcepool.basicresourcepool.access$800(basicresourcepool.java:32) @ com.mchange.v2.resourcepool.basicresourcepool$acquiretask.run(basicresourcepool.java:1810) @ com.mchange.v2.async.threadpoolasynchronousrunner$poolthread.run(threadpoolasynchronousrunner.java:547) warn >2014-03-20 10:36:06,657 com.mchange.v2.resourcepool.basicresourcepool[com.mchange.v2.async.threadpoolasynchronousrunner$poolthread-#1]: com.mchange.v2.resourcepool.basicresourcepool$acquiretask@170a650 -- acquisition attempt failed!!! clearing pending acquires. while trying acquire needed new resource, failed succeed more maximum number of allowed acquisition attempts (30). last acquisition attempt exception: java.sql.sqlexception: no suitable driver @ java.sql.drivermanager.getdriver(drivermanager.java:264) @ com.mchange.v2.c3p0.drivermanagerdatasource.driver(drivermanagerdatasource.java:224) @ com.mchange.v2.c3p0.drivermanagerdatasource.getconnection(drivermanagerdatasource.java:135) @ com.mchange.v2.c3p0.wrapperconnectionpooldatasource.getpooledconnection(wrapperconnectionpooldatasource.java:182) @ com.mchange.v2.c3p0.wrapperconnectionpooldatasource.getpooledconnection(wrapperconnectionpooldatasource.java:171) @ com.mchange.v2.c3p0.impl.c3p0pooledconnectionpool$1pooledconnectionresourcepoolmanager.acquireresource(c3p0pooledconnectionpool.java:137) @ com.mchange.v2.resourcepool.basicresourcepool.doacquire(basicresourcepool.java:1014) @ com.mchange.v2.resourcepool.basicresourcepool.access$800(basicresourcepool.java:32) @ com.mchange.v2.resourcepool.basicresourcepool$acquiretask.run(basicresourcepool.java:1810) @ com.mchange.v2.async.threadpoolasynchronousrunner$poolthread.run(threadpoolasynchronousrunner.java:547) 

please find following quartz properties , jobs xml,

quartz.properties

#============================================================== # registry scheduler properties #============================================================== org.quartz.scheduler.instancename=service_dgf_quartz_scheduler org.quartz.scheduler.makeschedulerthreaddaemon = true  #============================================================================ # cluster configuration #============================================================================ org.quartz.jobstore.isclustered = true org.quartz.jobstore.clustercheckininterval = 60000 org.quartz.jobstore.selectwithlocksql=locking row write select * {0}locks lock_name = ? org.quartz.scheduler.instanceid = auto  #============================================================== # configure threadpool #============================================================== org.quartz.threadpool.class=org.quartz.simpl.simplethreadpool org.quartz.threadpool.threadcount=10 org.quartz.threadpool.threadpriority=5  #============================================================== # configure jobstore #============================================================== org.quartz.jobstore.misfirethreshold = 60000 org.quartz.jobstore.class = org.quartz.impl.jdbcjobstore.jobstoretx org.quartz.jobstore.driverdelegateclass = com.ssc.mfw.server.quartz.teradatadelegate  #======================================================================================== # configure jobinitializer plugin #======================================================================================== org.quartz.plugin.jobinitializer.wrapinusertransaction = false org.quartz.plugin.jobinitializer.class = org.quartz.plugins.xml.xmlschedulingdataprocessorplugin org.quartz.plugin.jobinitializer.scaninterval = 0 org.quartz.plugin.jobinitializer.filenames=quartz/service_dgf_jobs.xml org.quartz.plugin.jobinitializer.failonfilenotfound = true  #============================================================================ # configure plugins #============================================================================ org.quartz.plugin.trigghistory.class = org.quartz.plugins.history.loggingjobhistoryplugin  #============================================================================ # configure jobstore additional code #============================================================================ org.quartz.jobstore.useproperties = false org.quartz.jobstore.datasource = quartzds org.quartz.jobstore.tableprefix = qrtz_  org.quartz.datasource.quartzds.connectionprovider.class=com.ssc.mfw.server.util.teradataconnectionprovider 

quartz_jobs.xml

<?xml version="1.0" encoding="utf-8"?> <job-scheduling-data xmlns="http://www.quartz-scheduler.org/xml/jobschedulingdata" xmlns:xsi="http://www.w3.org/2001/xmlschema-instance" xsi:schemalocation="http://www.quartz-scheduler.org/xml/jobschedulingdata http://www.quartz-scheduler.org/xml/job_scheduling_data_1_8.xsd" version="1.8">  <schedule> <job> <name>simplejob</name> <group>simplegroup</group> <description>mart creation job</description> <job-class>com.ssc.mfw.server.job.virtualmartcreationjob</job-class> </job> <trigger> <!-- servicenotification fired every 5 minutes --> <cron> <name>simplejobtrigger</name> <job-name>simplejob</job-name> <job-group>simplegroup</job-group> <cron-expression>0 0/5 * * * ?</cron-expression> </cron> </trigger> </schedule>  <schedule> <job> <name>dashboardjob</name> <group>dashboardgroup</group> <description>dashboard job</description> <job-class>com.ssc.mfw.server.job.dashboardjob</job-class> </job> <trigger> <!-- servicenotification fired every 12 hours --> <cron> <name>dashboardjobtrigger</name> <job-name>dashboardjob</job-name> <job-group>dashboardgroup</job-group> <cron-expression>0 0 0/12 * * ?</cron-expression> </cron> </trigger> </schedule>  <schedule> <job> <name>updateasattmsjob</name> <group>updateasattmsgroup</group> <description>update db key job</description> <job-class>com.ssc.mfw.server.job.updateasattmsjob</job-class> </job> <trigger> <!-- servicenotification fired every 4 hours --> <cron> <name>updateasattmsjobtrigger</name> <job-name>updateasattmsjob</job-name> <job-group>updateasattmsgroup</job-group> <cron-expression>0 0 0/4 * * ?</cron-expression> </cron> </trigger> </schedule> </job-scheduling-data> 

we facing above said when quartz database tables empty. if quartz tables contains job details, jobs running fine.

can 1 advice causing issue? doing wrong here.

regards, suresh.

your issue pretty simple: jdbc cannot resolve url have provided of database appropriate driver class. can fix in several different ways, unfortunately it's hard give specific advice, because of jdbc configuration hidden behind...

org.quartz.datasource.quartzds.connectionprovider.class=com.ssc.mfw.server.util.teradataconnectionprovider 

in likelihood, class overides org.quartz.utils.poolingconnectionprovider, , when so, provides string dbdriver first argument superconstructor. (that string may hardcoded, or externally configured somehow.) need update string jdbc driver appropriate new version of teradata. need ensure jdbc url using, probably, second argument superconstructor of teradataconnectionprovider, url new database consistent dbdriver class have surprised. check teradata 14 jdbc documentation docs driver name , compatible jdbc url format.

(if teradataconnectionprovider implementation supplies superconstructor properties object, make sure key "driver" bound jdbc driver class name , string url bound the appropriate jdbc url.)

(if want more specific help, include source teradataconnectionprovider.)

(alternatively , more transparently, configure datasource directly using config properties defined here.)


Comments

Popular posts from this blog

android - Get AccessToken using signpost OAuth without opening a browser (Two legged Oauth) -

org.mockito.exceptions.misusing.InvalidUseOfMatchersException: mockito -

google shop client API returns 400 bad request error while adding an item -