gpt4 book ai didi

java - quartz如何启动EJB无状态组件?

转载 作者:行者123 更新时间:2023-12-01 15:57:00 26 4
gpt4 key购买 nike

我使用的是Jboss5.1.x,EJB3.0

我已经研究这个主题好几天了。听说很简单,但好像要么是缺少文件,要么是我很难得到一些东西。

我的场景是有一个计划任务,当我第一次将我的应用程序服务器项目部署到 jboss 时,该任务将触发,然后我希望我的进程每 X 次重新执行一次。

我终于成功地将quartz mbean添加到jboss-service.xml

但是:

  1. 服务器部署后如何自动触发?我看到我必须通过servlet 来完成?那么我将如何在项目部署时触发 servlet?我不能在没有 servlet 的情况下触发它并直接在 EJB bean 上执行吗?

  2. 触发后,我想从触发方法调用 EJB 无状态 bean。

我希望场景是这样的:

(应用程序部署 -> Quartz -> EJB bean -> ..)代替(应用程序部署 -> Quartz -> servlet -> EJB bean)

我该怎么做?这是我找到的代码:

        InitialContext ctx = new InitialContext();
StdScheduler scheduler = (StdScheduler) ctx.lookup("Quartz");

JobDetail jd = new JobDetail("myjob", scheduler.DEFAULT_GROUP, NewJob.class);
CronTrigger ct = new CronTrigger("cronTrigger", "group2", "0 0/5 * * * ?");
scheduler.scheduleJob(jd, ct);

看来这段代码只会触发POJO(“NewJob.class”)。我想触发 EJB 无状态 bean。

有人有答案吗?请..最坏的情况我会从 Quartz 切换到其他东西。

谢谢,射线。

最佳答案

我不完全理解你的问题 - 或者更确切地说,我猜测这里有多个问题,但我不太明白它的语言,因为你似乎使用了“触发”一词( quartz 术语)以多种方式。

无论如何,我可以清楚地理解并回答您的一个问题,那就是如何让quartz 调用您的EJB 上的方法。只需编写一个 Job 类,在其execute() 方法中包含知道如何查找和调用该EJB 的代码。然后是该作业的调度程序和实例,每当它触发时,它都会调用 EJB。 Quartz 实际上附带了一个 EJBInvokerJob 来完成此任务,因此您可能无需修改即可使用它,或者可能希望使用其源代码作为起点。 (请注意,Jobquartz 附带了调用 EJB v.2 bean。但是,有一个可用于调用 EJB3 bean 的类,您可以在此处下载:http://jira.opensymphony.com/browse/QUARTZ-732)

您需要重申的有关 mbean 和 servlet 的其他问题,因为它让我困惑为什么您要使用这两种机制。

关于java - quartz如何启动EJB无状态组件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4875260/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com