需要石英调度器方面的帮助。这就是我到目前为止所做的。
Spring定义
<bean id="firstClass" class="com.my.sample.FirstClass">
// some properties
</bean>
<bean id="secondClass" class="com.my.sample.SecondClass">
// some properties
</bean>
<bean id="myJob" class="org.springframework.scheduling.quartz.JobDetailBean">
<property name="jobClass" value="com.my.sample.quartz.job.MyJob" />
<property name="jobDataAsMap">
<map>
<entry key="firstClass" value-ref="firstClass" />
<entry key="secondClass" value-ref="secondClass" />
</map>
</property>
</bean>
<bean id="simpleTrigger" class="org.springframework.scheduling.quartz.SimpleTriggerFactoryBean">
<property name="jobDetail" ref="myJob" />
<property name="repeatInterval" value="10000" />
<property name="startDelay" value="1000" />
</bean>
<bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="quartzProperties" ref="quartzProperties" />
<property name="jobDetails">
<list><ref bean="myJob" /></list>
</property>
<property name="triggers">
<list><ref bean="simpleTrigger" /></list>
</property>
</bean>
类实现
public class MyJob extends QuartzJobBean {
private static final Logger LOGGER = LoggerFactory.getLogger(MyJob.class);
private FirstClass firstClass;
private SecondClass secondClass;
@Override
protected void executeInternal(final JobExecutionContext jobExecutionContext) throws JobExecutionException {
LOGGER.info("Executing job...");
final AbcClass abcClass = firstClass.getAbc();
secondClass.testMethod(abcClass);
}
public void setFirstClass(final FirstClass firstClass) {
this.firstClass = firstClass;
}
public void setSecondClass(final SecondClass secondClass) {
this.secondClass = secondClass;
}
}
public interface MyParent {
AbcClass getAbc();
}
public class FirstClass implements MyParent, Serializable {
AbcClass getAbc() {
// generate abcClass from db
return abcClass;
}
}
但我犯了这样的错误
组织。springframework。豆。工厂BeanCreationException:创建名为“org”的bean时出错。springframework。行程安排。石英在URL中定义了SchedulerFactoryBean#0[bundle://343.0:0/META-INF/spring/osgi。xml]:调用init方法失败;嵌套的异常是org。石英JobPersistenceException:无法存储“dataSyncJob”作业的触发器“simpleTrigger”:com。我的样品MyParent[参见org上的嵌套异常:java.lang.ClassNotFoundException:com.my.sample.MyParent]。springframework。豆。工厂支持AbstractAutoWireAbleBeanFactory。initializeBean(AbstractAutowireCapableBeanFactory.java:1455)[428:org.springframework.beans:3.1.4.RELEASE]。。。
项目结构
com.my
|-sample
|-MyParent.java
|-FirstClass.java
|-SecondClass.java
|-quartz.job
|-MyJob.java
|-other
捆绑配置
<configuration>
<instructions>
<Bundle-SymbolicName>${project.artifactId}</Bundle-SymbolicName>
<Import-Package>
org.quartz.impl.jdbcjobstore.oracle,
org.quartz.simpl,
org.quartz.impl.jdbcjobstore,
*
</Import-Package>
<Export-Package>com.my.*</Export-Package>
<excludeDependencies>*;scope=provided|runtime</excludeDependencies>
<DynamicImport-Package>
org.apache.cxf.*,
org.springframework.beans.*
</DynamicImport-Package>
</instructions>
</configuration>
看起来你在做osgi,你需要确保:
如果您使用的是Maven,那么就可以操纵清单。带有ApacheFelix maven bundle插件的MF文件。
我想知道是否有一个函数/方法来创建随机时间触发的作业。我的意思是,如果我设置一个cron计划在每周一上午10:00触发,并给出一个时间间隔,比方说30分钟,触发器将总是在9:30到10:30之间关闭。例如,这是cron调度表。
我希望它们按以下顺序运行:job3、job4、job1、job2 在20次运行中,只有大约3次我得到了预期的结果。对于其他任务,要运行的第一个任务几乎是随机的,其余任务的顺序是正确的。一次运行如下:job1,job3,job4,job2或job4,job3,job1,job2 我是不是没有正确理解Quartz中的优先级是如何工作的?我找不到到底发生了什么。
我是第一次使用石英调度器。我没有什么疑问,希望有人能帮我一把。多谢! 多个职务组,一个组内有多个具有唯一名称的职务 一个职务组可以与一个触发器关联,以便该组下的所有职务将同时被激发 我觉得这个组织在调度器软件上是相当正常的。但是,我只找到了使用多个触发器注册相同作业的引用。即使这样,我还是认为用相同的触发器注册多个作业在逻辑上是可以实现的。 > 是否可以根据触发器的名称实现从调度程序获取触发器A?
问题内容: 假设我有一个类似 测试此bean实际上将在其指定日期( 即 最接近每月15日的工作日)触发的最佳方法是什么? 更新 :这应该是一个单元测试,所以我不会启动虚拟机或更改系统时间。 问题答案: 首先,没有必要进行自我测试。它是spring框架的一部分,已经过测试。 更好的测试可能是测试您的cron表达式是否符合您的期望。这里的一种选择是使用Quartz的类。给定一个对象,您可以调用,该表达
我使用Quartz Scheduler(使用JobDetailFactoryBean)和Spring来安排一些作业。现在我通过XmlApplicationContext通过spring配置实现了这一点,我必须将其更改为AnnotationConfigApplicationContext。那么,我如何在AnnotationConfigApplicationContext中实现这个cronjob呢。这