谢谢你的帮助!
@ManagedBean
@ApplicationScoped
public class JobDatasource implements Job {
@EJB
JobContent jc;
private String TEXT = "V1";
public JobDatasource() {
System.out.println("Job Bean created");
}
@Override
public void execute(JobExecutionContext context)
throws JobExecutionException {
jc.doStuff();
}
@PostConstruct
public void startJob() throws SchedulerException {
System.out.println("Und los gehts!");
SchedulerFactory sf = new StdSchedulerFactory();
Scheduler sched = sf.getScheduler();
JobDetail jobdataSourceCheck = JobBuilder.newJob(JobDatasource.class)
.withIdentity("DataSourceCheck", "group1").build();
Trigger trigger = newTrigger()
.withIdentity("trigger1", "group1")
.startNow()
.withSchedule(
simpleSchedule().withIntervalInSeconds(10)
.repeatForever()).build();
sched.scheduleJob(jobdataSourceCheck, trigger);
jc.doStuff();
sched.start();
}
public String getTEXT() {
return TEXT;
}
public void setTEXT(String tEXT) {
TEXT = tEXT;
}
}
@Stateless
public class JobContent {
@EJB
ITestDataDao dao;
public void doStuff() {
Set<TestData> testdata = createTestData();
for (TestData td : testdata) {
dao.saveData(td);
}
}
private Set<TestData> createTestData() {
Set<TestData> testData = new HashSet<TestData>();
for (int i = 0; i < 500; i++) {
TestData td = new TestData();
td.setRandomText("TESTDATA");
testData.add(td);
}
return testData;
}
}
它不会被注入,因为您使用的是Quartz而不是EJB来启动任务。
你可以做两件事:
>
使用RMI来获取EJB。您可以使用服务定位器模式并在任务中应用它:
您可以使用EJB计时器来启动任务,而不是Quartz。
@schedule(dayofweek=“mon,wed”,hour=“8”,minute=“30”)public void yourTask(){system.out.println(“it alive”);}
可以说one选项可以应用于任何EJB版本,但是您需要使用查找并注意EJB名称。使用选项二,您可以使用EJB来启动任务并访问所有EJB特性,但您需要EJB3.1。
问题内容: 有没有办法将石英作为基础调度程序? 我可以想到两件事,但都需要做一些工作: 创建一个将解析注解并注册石英作业的自定义 实施委托石英的工具。 问题是:以上两个选项是否已经编写过,是否还有另一个选项? 问题答案: 我最终制作了自己的弹簧石英“桥”。我打算建议将其作为春季的改进。 首先,我创建了一个新注释,该注释将放置在实现quartz Job接口的类上: (请注意原型作用域-石英假定每个作
所以我有一个技术挑战我需要帮助。 一个大型项目正在使用Quartz调度程序调度一个作业,使其在每晚9点运行。 然而,调度的作业需要从属性文件中读取值,使用自动布线获取一些bean等。 当我使用@autowired和@value注释时,我发现这些值为空。 问题是Quartz在spring容器外部使用创建JobDetail对象。可以在下面的代码中看到。 因此,包装的对象无法使用Spring访问属性文件
问题内容: 似乎Quartz Scheduler每秒可以运行的作业数量受到限制。在我们的方案中,我们每秒大约有20个作业,可以进行24x7的启动,而石英可以很好地完成每秒10个作业(对于JDBC支持的JobStore,它具有100个石英线程和100个数据库连接池大小),但是,当我们将其增加到20个时每秒的作业数量,石英变得非常非常慢,与实际的计划时间相比,石英的触发作业非常晚,从而导致许多失火,并
我正在使用带有TerracottaJobStore Class的石英调度程序来每5分钟调度一次作业。我的工作配置是: 组织。石英jobStore。class=org。陶土。石英EnterpriseTerracottaJobStore组织。石英jobStore。tcconfig=localhost:9510 org。石英线程池。线程数=25 我有一个附加了5000个触发器的单个作业,然后该作业被安排
我尝试在Quartz调度程序上创建集成测试。 我有两个表:事件和任务。调度程序通过cron触发器按事件创建任务。 首先,我得到例外: 无法初始化代理-没有会话 我在Spring Data JPA中使用这个答案-“无法初始化代理-没有会话”-方法标记为事务性,并添加到我的测试配置。所以现在我又遇到了另一个问题——我的测试有时是正确的,但更常见的是它失败了,因为它只创建了一个任务。 由Quartz执行
我正在使用和Quartz Grails插件2.0.13构建一个应用程序,有一些旧作业我将它们迁移到我的新应用程序,它们以前工作正常,但是现在我在尝试从页面手动运行它们时收到以下错误,在创建新作业并尝试手动运行它后也会收到相同的错误。知道可能导致此错误的原因以及如何解决它吗? 以下是我的工作示例: