quartz连接数据库相关问题

421 阅读1分钟

quartz配置相关

quartz连接数据库

org.quartz.scheduler.instanceName=MyScheduler
org.quartz.threadPool.threadCount=5
org.quartz.jobStore.class=org.quartz.impl.jdbcjobstore.JobStoreTX
org.quartz.jobStore.driverDelegateClass=org.quartz.impl.jdbcjobstore.StdJDBCDelegate
org.quartz.jobStore.tablePrefix=QRTZ_
org.quartz.jobStore.dataSource=quartz
org.quartz.dataSource.quartz.driver=com.mysql.cj.jdbc.Driver
org.quartz.dataSource.quartz.URL=jdbc:mysql://192.168.3.98:3306/quartz?serverTimezone=GMT%2B8&useSSL=false&characterEncoding=utf-8&allowPublicKeyRetrieval=true
org.quartz.dataSource.quartz.user=root
org.quartz.dataSource.quartz.password=123456
org.quartz.dataSource.quartz.maxConnections=5

数据库连接需要SQL文件,SQL文件在自带的包中也有,在这个文件夹下,之后只找到你的SQL版本。

image-20240725152019526

image-20240725152047922

注意事项

在连接数据库时需要注意这下面几行配置当中的xxx.xxxx.xxx.quartz.xxx,其中quartz指的是你的数据库名称

org.quartz.jobStore.dataSource=quartz
org.quartz.dataSource.quartz.driver=com.mysql.cj.jdbc.Driver
org.quartz.dataSource.quartz.URL=jdbc:mysql://192.168.3.98:3306/quartz?serverTimezone=GMT%2B8&useSSL=false&characterEncoding=utf-8&allowPublicKeyRetrieval=true
org.quartz.dataSource.quartz.user=root
org.quartz.dataSource.quartz.password=123456
org.quartz.dataSource.quartz.maxConnections=5

例子

如果你的数据库名称叫bunnyQuartz,那么下面应当换成

org.quartz.jobStore.dataSource=bunnyQuartz
org.quartz.dataSource.bunnyQuartz.driver=com.mysql.cj.jdbc.Driver
org.quartz.dataSource.bunnyQuartz.URL=jdbc:mysql://192.168.3.98:3306/bunnyQuartz?serverTimezone=GMT%2B8&useSSL=false&characterEncoding=utf-8&allowPublicKeyRetrieval=true
org.quartz.dataSource.bunnyQuartz.user=root
org.quartz.dataSource.bunnyQuartz.password=123456
org.quartz.dataSource.bunnyQuartz.maxConnections=5

连接中报错

如果报错类型有下面的,添加包,包的版本根据你的项目而定,我的是SpringBoot3.x的

<dependency>
    <groupId>com.mchange</groupId>
    <artifactId>c3p0</artifactId>
    <version>0.9.5.5</version> <!-- 请使用适合你项目的版本 -->
</dependency>

如果报错类型有下面的

org.quartz.SchedulerException: Could not initialize DataSource: myDS
 [See nested exception: org.quartz.SchedulerException: ConnectionProvider class 'org.quartz.utils.C3p0PoolingConnectionProvider' could not be instantiated. [See nested exception: java.lang.reflect.InvocationTargetException]]
    at org.quartz.impl.StdSchedulerFactory.instantiate(StdSchedulerFactory.java:1054)
    at org.quartz.impl.StdSchedulerFactory.getScheduler(StdSchedulerFactory.java:1579)
    at org.quartz.impl.StdSchedulerFactory.getDefaultScheduler(StdSchedulerFactory.java:1595)
    at cn.bunny.service.job.MyJobTest.test4(MyJobTest.java:62)
    at java.base/java.lang.reflect.Method.invoke(Method.java:580)
    at java.base/java.util.ArrayList.forEach(ArrayList.java:1597)
    at java.base/java.util.ArrayList.forEach(ArrayList.java:1597)
Caused by: org.quartz.SchedulerException: ConnectionProvider class 'org.quartz.utils.C3p0PoolingConnectionProvider' could not be instantiated. [See nested exception: java.lang.reflect.InvocationTargetException]
    at org.quartz.impl.StdSchedulerFactory.instantiate(StdSchedulerFactory.java:1044)
    ... 6 more
Caused by: java.lang.reflect.InvocationTargetException
    at java.base/jdk.internal.reflect.DirectConstructorHandleAccessor.newInstance(DirectConstructorHandleAccessor.java:74)
    at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:502)
    at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:486)
    at org.quartz.impl.StdSchedulerFactory.instantiate(StdSchedulerFactory.java:1042)
    ... 6 more
Caused by: java.lang.NoClassDefFoundError: com/mchange/v2/async/ThreadPoolReportingAsynchronousRunner
    at com.mchange.v2.c3p0.C3P0Registry.<clinit>(C3P0Registry.java:184)
    at com.mchange.v2.c3p0.impl.PoolBackedDataSourceBase.<init>(PoolBackedDataSourceBase.java:289)
    at com.mchange.v2.c3p0.impl.AbstractPoolBackedDataSource.<init>(AbstractPoolBackedDataSource.java:39)
    at com.mchange.v2.c3p0.AbstractComboPooledDataSource.<init>(AbstractComboPooledDataSource.java:107)
    at com.mchange.v2.c3p0.AbstractComboPooledDataSource.<init>(AbstractComboPooledDataSource.java:103)
    at com.mchange.v2.c3p0.ComboPooledDataSource.<init>(ComboPooledDataSource.java:12)
    at org.quartz.utils.C3p0PoolingConnectionProvider.initialize(C3p0PoolingConnectionProvider.java:186)
    at org.quartz.utils.C3p0PoolingConnectionProvider.<init>(C3p0PoolingConnectionProvider.java:131)
    at java.base/jdk.internal.reflect.DirectConstructorHandleAccessor.newInstance(DirectConstructorHandleAccessor.java:62)
    ... 9 more
Caused by: java.lang.ClassNotFoundException: com.mchange.v2.async.ThreadPoolReportingAsynchronousRunner
    at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641)
    at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188)
    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:525)
    ... 18 more