问题标签 [quartz-scheduler]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
grails - Grails Quartz Job 升级后没有 Hibernate 会话,导致 LazyInitializationException
我已将 Grails 1.0.4 应用程序升级到 1.1.1。升级后,我在执行 Quartz 作业(使用 Quartz 插件 0.4.1)时反复出现异常。该插件用于通过服务使用 Simple 和 Cron Triggers 手动安排作业(解释代码如下):
我的 BatchJob 作业设置如下:
这是 Batch.groovy(域)的缩写定义:
但是,当schedulerService.schedule()
使用现有的已保存批处理调用时,我收到以下异常:
我已经尝试了以下操作来解决这个问题,但没有一个奏效:
- 我已经
static fetchMode = [batchStatus: 'eager']
在我的 Batch 域类中指定 - 我
static mapping = { columns { batchStatus lazy:false }}
在我的 Batch 域类上使用过 - 我
batch.attach()
在调用Batch.get()
Job后尝试使用
我不能BatchJob.triggerNow()
在这种情况下使用,因为这只是几个示例之一 - 其他示例仍由服务安排,但可能被安排为 cron 作业或其他方式。我应该提一下,我在升级 Grails 时也升级了 Quartz 插件;之前的 Quartz 版本是 0.4.1-SNAPSHOT(相对于升级版,只有 0.4.1)。
如何让 Hibernate 会话在这些手动触发的 Quartz 作业中正常工作?
我还将这个问题发送到 grails-user 邮件列表,至于像这样的更小众问题,该列表似乎引起了更多的响应。如果有人从那里出来,我会用答案更新这个问题。这是一个链接。
java - 取消部署应用程序时触发功能
在 Glassfish 中部署/取消部署/重新部署 JEE5 应用程序时,如何自动触发 Java 函数以停止 Quartz 调度程序作业。
java - 在石英中动态安排作业
我想创建一个通用的工作类,它需要一些参数而不是事先创建工作类?
所有设置都存储在数据库中,因此我们可以调用“刷新”,它会删除所有作业并从数据库中重新注册它们。
java - 在石英中删除触发器
有没有办法删除具有特定作业的计划触发器?似乎删除触发器的唯一方法是删除整个作业,然后重新注册作业和触发器。
我的工作可能有 100 多个触发器,我真的不想删除该工作并在我只需要删除 1 个触发器时重新注册所有触发器。
此外,有没有办法在配置触发器后立即停止调度程序执行作业?
谢谢
java - 防止石英调度器作业立即触发
有没有办法阻止作业在首次注册时执行?我可能在 1 个作业下有 100 多个触发器,并且我不希望在应用程序服务器重新启动时执行所有触发器。
我们将作业/触发器存储在内存中,并将信息存储在我们的数据库中。所以当应用服务器启动时,我们注册了所有的作业/触发器。
.net - Quartz .Net 作业调用 WCF 服务
我从 Quartz .Net 作业中调用 WCF 服务的最佳方式是什么?
编写一个单独的 exe 来启动 WCF 代理并从作业中调用该 exe 是最简单的方法吗?这似乎可行,但有点令人费解。如果我能以某种方式让 Job 以某种方式注入代理,那就更好了。
谢谢,马特
java - Quartz Java 恢复作业会执行多次
对于我的应用程序,我创建作业并使用 CronTriggers 安排它们。每个作业只有一个触发器,并且作业名称和触发器名称都相同。没有作业共享触发器。
现在当我创建一个像这样“0/1 * * * *?”的cron触发器时 它指示作业每秒执行一次,它工作得很好。
当我第一次通过调用暂停工作时,问题就出现了:
然后在假设 50 秒后恢复工作:
我看到的是,在这 50 秒内,作业没有按要求执行。但是在我恢复工作的那一刻,我看到同时执行了 50 次工作!!!
我认为这是由于失火指令的默认设置,但即使在创建时将触发器的失火指令设置为此:
同样的事情也会发生。任何人都可以提出解决此问题的方法吗?
jobs - 不能用石英运行多个作业
嗨,我正在尝试使用批处理框架运行两个作业。我的问题是 SimpleJobLauncher 只运行一个作业列表中的最后一个作业。我在做什么:我的数据库中有两个工作以及工作的步骤。我从数据库中读取作业数据并按以下方式处理它
public class BatchJobScheduler {
private static Log sLog = LogFactory.getLog(BatchJobScheduler.class);
private ApplicationContext ac;
private DataSourceTransactionManager mTransactionManager;
private SimpleJobLauncher mJobLauncher;
private JobRepository mJobRepository;
private SimpleStepFactoryBean stepFactory;
private MapJobRegistry mapJobRegistry;
private JobDetailBean jobDetail;
private CronTriggerBean cronTrigger;
private SimpleJob job;
private SchedulerFactoryBean schedulerFactory;
private static String mDriverClass;
private static String mConnectionUrl;
private static String mUser;
private static String mPassword;
public static JobMetaDataFeeder metadataFeeder;
static {
try {
loadProperties();
metadataFeeder = new JobMetaDataFeeder();
metadataFeeder.configureDataSource(mDriverClass, mConnectionUrl,
mUser, mPassword);
} catch (FileNotFoundException e) {
} catch (IOException e) {
} catch (SQLException e) {
} catch (ClassNotFoundException e) {
}
}
}
public class MailJobLauncher extends QuartzJobBean {
/**
* Special key in job data map for the name of a job to run.
*/
static final String JOB_NAME = "jobName";
private static Log sLog = LogFactory.getLog(MailJobLauncher.class);
private JobLocator mJobLocator;
private JobLauncher mJobLauncher;
}
我无法弄清楚为什么启动器忽略了所有其他工作,请帮助我。问候
c# - 计划设置字符串而不使用 CRON 字符串
目前我们正在使用 cron 字符串在我们的项目中设置 Quartz 作业。但由不是开发人员的管理员设置似乎有点过分或有点混乱。所以,我们尝试使用这样的简单字符串,
是否有任何现有的框架(或在 Quartz 中)我可以从这个字符串中获取一个 cron 字符串?(我知道我可以解析这个以获得一个简单的触发器,但不想干)
.net - Quartz.Net 线程池
我设置了quartz.net 来运行几个预定的作业和几个轮询作业。轮询作业可以包含可能需要 10 分钟的运行代码。这些作业从用户操作排队(因此可能有 x 个用户操作的队列)。我已经安排了当时必须运行的工作。但是,这些线程都可能被长时间运行的轮询作业用完。有没有办法为轮询作业永远不会使用的计划任务指定线程?
我知道线程优先级,但是如果其他线程已在使用中,这并不能保证计划的作业将运行。
谢谢你的帮助。