- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
websphere8.5.5.13上部署了spring应用
我尝试使用 spring-quartz 通过 cron 来安排我的作业,但它们开始时出现错误我的 quartz 配置类
@Configuration
@Import(PersistenceConfig.class)
@PropertySource(value = {"classpath:application.properties"})
@EnableScheduling
public class ExportConfig {
private Logger logger = Logger.getLogger(getClass());
@Autowired
private DataSource dataSource;
@Autowired
private EntityManagerFactory entityManagerFactory;
@Getter
@Autowired
private MyService service;
private final String QRTZ_TRIGGER = "My_TRIGGER";
private final String QRTZ_GROUP = "My_GROUP";
private final String QRTZ_JOB = "MyJOB";
private final String TIME = "0 0-59 0-23 * * ?"; /* каждый час, каждые 0,15,30,45 минут */
@Bean
@DependsOn(value = {"entityManagerFactory", "dataSource"})
public JobDetail cronJobMy() {
JobKey jobKey = new JobKey(QRTZ_JOB, QRTZ_GROUP);
return JobBuilder
.newJob(MyJob.class)
.storeDurably(true)
.requestRecovery(true)
.withIdentity(jobKey).build();
}
@Bean
@DependsOn(value = {"entityManagerFactory", "dataSource"})
public Trigger cronTriggerMy() {
TriggerKey triggerKey = new TriggerKey(QRTZ_TRIGGER, QRTZ_GROUP);
return TriggerBuilder
.newTrigger()
.withIdentity(triggerKey)
.withSchedule(createSchedule(TIME)).build();
}
@Bean
@DependsOn(value = {"entityManagerFactory", "dataSource"})
public Scheduler cronSchedulerMy(JobDetail cronJobMy, Trigger cronTriggerMy) throws SchedulerException {
StdSchedulerFactory factory = new StdSchedulerFactory("quartzStandalone.properties");
Scheduler scheduler = factory.getScheduler();
boolean triggerExist = scheduler.checkExists(cronTriggerMy.getKey());
boolean jobExist = scheduler.checkExists(cronJobMy.getKey());
if (triggerExist || jobExist) {
scheduler.deleteJob(new JobKey(QRTZ_JOB, QRTZ_GROUP));
}
scheduler.start();
scheduler.getContext().put("SERVICE", service);
scheduler.scheduleJob(cronJobMy, cronTriggerMy);
return scheduler;
}
private static ScheduleBuilder createSchedule(String cronExpression) {
CronScheduleBuilder builder = CronScheduleBuilder.cronSchedule(cronExpression);
return builder;
}
}
工作看起来像这样:
@DisallowConcurrentExecution
@PersistJobDataAfterExecution
public class ExportJob implements Job {
private static final String MESSAGE = "===================================EXPORT QUARTZ TACT===================================";
private Logger logger = Logger.getLogger(getClass());
@Override
public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
logger.log(Level.INFO, MESSAGE);
try {
ApplicationContext springContext =
WebApplicationContextUtils.getWebApplicationContext(ContextLoaderListener.getCurrentWebApplicationContext().getServletContext());
Object bean = springContext.getBean("exportService");
if (bean != null) {
ExportService exportService = (ExportService) bean;
exportService.export();
}
} catch (Exception e) {
e.printStackTrace();
logger.log(Level.ERROR, "EXPORT_SERVICE_BY_QUARTZ Failed..");
logger.log(Level.ERROR, Arrays.toString(e.getStackTrace()));
}
}
}
属性文件
#============================================================================
# Configure Main Scheduler Properties
# Configure Main Scheduler Properties
#============================================================================
org.quartz.scheduler.instanceName = MYAPPStandaloneScheduler
org.quartz.scheduler.instanceId = AUTO
#============================================================================
# Configure ThreadPool
#============================================================================
org.quartz.threadPool.class = org.quartz.simpl.SimpleThreadPool
org.quartz.threadPool.threadCount = 1
org.quartz.threadPool.makeThreadsDaemons = true
#============================================================================
# Configure JobStore
#============================================================================
org.quartz.jobStore.misfireThreshold = 60000
org.quartz.jobStore.class = org.quartz.impl.jdbcjobstore.JobStoreTX
org.quartz.jobStore.driverDelegateClass = org.quartz.impl.jdbcjobstore.oracle.OracleDelegate
org.quartz.jobStore.useProperties = false
org.quartz.jobStore.dataSource = MYAPP
org.quartz.jobStore.tablePrefix = QRTZ_
org.quartz.jobStore.isClustered = false
org.quartz.jobStore.clusterCheckinInterval = 20000
org.quartz.dataSource.MYAPP.jndiURL = java:comp/env/jdbc/MYAPP
我的pom.xml
<!-- Quartz for schedule -->
<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz</artifactId>
<version>2.3.2</version>
</dependency>
<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz-oracle</artifactId>
<version>1.8.5</version>
</dependency>
但是,当尝试启动我的应用程序时,出现错误消息
'MYAPPStandaloneScheduler' with instanceId 'NON_CLUSTERED' Scheduler class: 'org.quartz.core.QuartzScheduler' - running locally. NOT STARTED. Currently in standby mode. Number of jobs executed: 0
Using thread pool 'org.quartz.simpl.SimpleThreadPool' - with 1 threads. Using job-store 'org.quartz.impl.jdbcjobstore.JobStoreTX' - which supports persistence. and is not clustered.[11/29/19 9:05:21:513 MSK] 00000109 SystemOut O [2019-11-29 09:05:21.513] INFO org.quartz.impl.StdSchedulerFactory Quartz scheduler 'MYAPPStandaloneScheduler' initialized from the specified file : 'quartzStandalone.properties' from the class resource path. [11/29/19 9:05:21:521 MSK] 00000109 SystemOut O [2019-11-29 09:05:21.521] WARN rt.AnnotationConfigWebApplicationContext Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'cronSchedulerExport' defined in class path resource [quartz/ExportConfig.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.quartz.Scheduler]: Factory method 'cronSchedulerExport' threw exception; nested exception is org.quartz.impl.jdbcjobstore.NoSuchDelegateException: Couldn't create delegate: org.quartz.impl.jdbcjobstore.oracle.OracleDelegate [See nested exception: pringframework.web.context.ContextLoader Context initialization failed org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'cronSchedulerExport' defined in class path resource [quartz/ExportConfig.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.quartz.Scheduler]: Factory method 'cronSchedulerExport' threw exception; nested exception is org.quartz.impl.jdbcjobstore.NoSuchDelegateException: Couldn't create delegate: org.quartz.impl.jdbcjobstore.oracle.OracleDelegate [See nested exception: java.lang.InstantiationException: org.quartz.impl.jdbcjobstore.oracle.OracleDelegate] at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:599) 75) at com.ibm.io.async.ResultHandler$2.run(ResultHandler.java:905) at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1892) Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.quartz.Scheduler]: Factory method 'cronSchedulerExport' threw exception; nested exception is org.quartz.impl.jdbcjobstore.NoSuchDelegateException: Couldn't create delegate: org.quartz.impl.jdbcjobstore.oracle.OracleDelegate [See nested exception: java.lang.InstantiationException: org.quartz.impl.jdbcjobstore.oracle.OracleDelegate] at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:189) at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:588) ... 76 more Caused by: org.quartz.impl.jdbcjobstore.NoSuchDelegateException: Couldn't create delegate: org.quartz.impl.jdbcjobstore.oracle.OracleDelegate [See nested exception: java.lang.InstantiationException: org.quartz.impl.jdbcjobstore.oracle.OracleDelegate] at org.quartz.impl.jdbcjobstore.JobStoreSupport.getDelegate(JobStoreSupport.java:3218) ... 77 more Caused by: java.lang.InstantiationException: org.quartz.impl.jdbcjobstore.oracle.OracleDelegate at java.lang.J9VMInternals.newInstanceImpl(Native Method) at java.lang.Class.newInstance(Class.java:1762) at org.quartz.impl.jdbcjobstore.JobStoreSupport.getDelegate(JobStoreSupport.java:3213) ... 96 more [11/29/19 9:05:21:537 MSK] 00000109 webapp E com.ibm.ws.webcontainer.webapp.WebApp notifyServletContextCreated SRVE0283E: Exception caught while initializing context: {0} org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'cronSchedulerExport' defined in class path resource [quartz/ExportConfig.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.quartz.Scheduler]: Factory method 'cronSchedulerExport' threw exception; nested exception is org.quartz.impl.jdbcjobstore.NoSuchDelegateException: Couldn't create delegate: org.quartz.impl.jdbcjobstore.oracle.OracleDelegate [See nested exception: java.lang.InstantiationException: org.quartz.impl.jdbcjobstore.oracle.OracleDelegate] at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:599) at com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:813) at com.ibm.ws.management.AdminServiceImpl$1.run(AdminServiceImpl.java:1350) at com.ibm.io.async.ResultHandler$2.run(ResultHandler.java:905) at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1892) Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.quartz.Scheduler]: Factory method 'cronSchedulerExport' threw exception; nested exception is org.quartz.impl.jdbcjobstore.NoSuchDelegateException: Couldn't create delegate: org.quartz.impl.jdbcjobstore.oracle.OracleDelegate [See nested exception: java.lang.InstantiationException: org.quartz.impl.jdbcjobstore.oracle.OracleDelegate] at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:189) at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:588) ... 76 more Caused by: org.quartz.impl.jdbcjobstore.NoSuchDelegateException: Couldn't create delegate: org.quartz.impl.jdbcjobstore.oracle.OracleDelegate [See nested exception: java.lang.InstantiationException: org.quartz.impl.jdbcjobstore.oracle.OracleDelegate] at org.quartz.impl.jdbcjobstore.JobStoreSupport.getDelegate(JobStoreSupport.java:3218) at org.quartz.impl.jdbcjobstore.JobStoreSupport.checkExists(JobStoreSupport.java:1988) at org.quartz.impl.jdbcjobstore.JobStoreSupport$23.execute(JobStoreSupport.java:1981) at org.quartz.impl.jdbcjobstore.JobStoreSupport.executeInNonManagedTXLock(JobStoreSupport.java:3864) at org.quartz.impl.jdbcjobstore.JobStoreTX.executeInLock(JobStoreTX.java:93) at org.quartz.impl.jdbcjobstore.JobStoreSupport.executeWithoutLock(JobStoreSupport.java:3800) at org.quartz.impl.jdbcjobstore.JobStoreSupport.
org.quartz.impl.jdbcjobstore.NoSuchDelegateException: Couldn't create delegate:
作业的状态保存在_QRTZ - 数据库 Oracle11g 中的表中
最佳答案
为什么不使用 Spring quartz 启动器?您可以使用 spring 数据源而不是专用数据源:
spring:
datasource:
driver-class-name: org.postgresql.Driver
url: jdbc:postgresql://127.0.0.1:5432/postgres
username: postgres
password: password
quartz:
scheduler-name: quartzSchedulernot work anymore
jobStore: jdbc
startup-delay: PT10S
wait-for-jobs-to-complete-on-shutdown: true
properties:
org.quartz.scheduler.instanceId: AUTO
org.quartz.scheduler.jmx.export: true
org.quartz.threadPool.threadCount: 15
org.quartz.threadPool.threadPriority: 5
org.quartz.threadPool.class: org.quartz.simpl.SimpleThreadPool
org.quartz.threadPool.threadsInheritContextClassLoaderOfInitializingThread: true
org.quartz.jobStore.driverDelegateClass: org.quartz.impl.jdbcjobstore.PostgreSQLDelegate
org.quartz.jobStore.tablePrefix: QRTZ_
org.quartz.jobStore.isClustered: true
org.quartz.jobStore.clusterCheckinInterval: 1000
您还必须删除您的调度程序创建并让 spring 为您完成。
关于java - 当尝试启动应用程序时,spring-quartz 不会启动并显示错误消息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59103963/
说真的,你怎么能在不发疯的情况下处理所有这些异常呢?我是不是读了太多关于异常处理的文章或什么?我尝试重构了几次,但每次似乎都以更糟糕的结果告终。也许我应该承认确实会发生异常(exception)情况,
背景 两者 try/rescue和 try/catch是 Elixir 中的错误处理技术。根据 corresponding chapter在介绍指南中。 Errors can be rescued u
每当我尝试在 Raspberry PI 上运行此 python 脚本时,我都会遇到问题: import socket import sys # Create a TCP/IP socket sock
我想知道一些关于 PHP 的 try , catch声明。 让我们考虑以下示例。 abstract class ExceptionA extends Exception {} class Except
我的 laravel v5.4 项目中有两个模型,user 和 admin。 在 config/auth.php 中,我向守卫和提供者添加了管理员,如下所示: 'guards' => [ 'w
try: r = requests.get(url, params={'s': thing}) except requests.ConnectionError, e: print e
我有以下代码。 但是,它并不能捕获所有错误,而我仍然会收到“throw er;//未处理的'错误'事件”。 为什么是这样? app.post('/api/properties/zip/:zip/bed
问题与细节 我正在使用自定义错误处理,遇到的错误之一是“路径中的非法字符”。我有一个自定义函数,旨在通过路径字符串查找此类非法字符,并在找到它们时引发自定义错误。但是我发现,取决于非法字符,Test-
This question already has answers here: How do I catch a numpy warning like it's an exception (not j
我正在使用其他人的代码,但我不熟悉try/catch,因此我举了一个类似的小例子。在第11行上,如果我写了error(''),似乎没有发现错误并增加了索引j。但是,编写error(' ')或error
我在我的一个程序中遇到了这个问题,在这种情况下,尝试/异常(exception)的错误使程序变得更好,以防用户意外输入了他们不应该输入的内容。它仍然给我错误,我为为什么感到困惑。如果对我的问题确实很重
我在尝试TRY ... CATCH块时遇到问题。有人可以解释为什么以下代码无法执行我的sp吗? DECLARE @Result int SET @Result = 0 BEGIN TRY SE
我有一个相当大的 powershell 脚本,其中包含许多(20 多个)执行各种操作的函数。 现在所有代码实际上都没有任何错误处理或重试功能。如果某个特定的任务/功能失败,它就会失败并继续。 我想改进
为什么我尝试时需要导入 inputmismatchException catch(InputMismatchException e){ System.out.println("
我对此感到困惑 - 我为辅助方法编写了一个 try/catch 。它的目的是捕获任何无效输入(任何不是“男性”或“女性”的内容(没有特定情况)。如果输入无效,它将通知用户,然后让他们重试。如果有效,则
我有时会发现自己处于如下场景。尽可能简单地陈述问题 “有时我会创建一段代码,Java 让我将其包含在 try/catch 语句中。我没有使用 catch,所以我将其留空。为什么这是错误的?” boo
我有点困惑为什么当我不使用 Try block 时会出现 Try block 错误。 我在代码块底部附近收到错误通知。如果我不使用 try/catch,有人可以向我解释为什么会发生这种情况吗? 它是否
我已经盯着我的电脑两个小时了,我不知道我做错了什么。谁能帮助我看到光明? package blackjack; import java.util.Random; import java.util.Sc
我想将方法保存在 Enum 中,但 Class.getDeclaredMethod 抛出 NoSuchMethodException,那么我该如何处理呢?我的代码: public enum Car
这个问题已经有答案了: Executing multi-line statements in the one-line command-line (18 个回答) 已关闭 3 年前。 如何使用try.
我是一名优秀的程序员,十分优秀!