Java quartz将如何启动EJB无状态组件?

Java quartz将如何启动EJB无状态组件?,java,jboss,quartz-scheduler,jboss5.x,Java,Jboss,Quartz Scheduler,Jboss5.x,我正在使用Jboss5.1.x和EJB3.0 我已经研究这个问题好几天了。我听说这很容易,但似乎是因为缺少文件,或者我很难得到一些东西 我的场景是有一个计划任务,当我第一次将应用程序服务器项目部署到jboss时会触发该任务,然后我希望我的进程每X次重新执行一次 我终于设法将quartz mbean添加到jboss-service.xml中 但是: 如何在服务器部署后自动触发它?我看到我必须通过servlet来完成它?那么如何在项目部署时触发servlet呢?我不能在没有servlet的情况下触发

我正在使用Jboss5.1.x和EJB3.0

我已经研究这个问题好几天了。我听说这很容易,但似乎是因为缺少文件,或者我很难得到一些东西

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

我终于设法将quartz mbean添加到jboss-service.xml中

但是:

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

  • 在它被触发之后,我想从触发器方法调用EJB无状态bean

  • 我希望场景是这样的:

    (应用程序部署->石英->EJB bean->..)而不是(应用程序部署->石英->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在EJB上调用方法。只需编写一个作业类,该类的execute()方法中包含知道如何查找和调用该EJB的代码。然后是该作业的调度程序和实例,无论何时激发,它都将调用EJB。Quartz实际上附带了一个EJBInvokerJob,可以做到这一点,因此您可以不经修改就使用它,或者希望使用它的源代码作为起点。(注意,quartz附带的作业调用EJBV.2bean。但是,有一个类可用于调用EJB3bean,您可以在此处下载:)


    关于mbean和servlet的另一个问题,您需要重申,因为这让我很困惑,为什么您要同时使用这两种机制。

    嗨,谢谢您的回答,我检查了您的链接,但没有提到如何设置工作时间?为了设置触发时间,您在哪里设置crontab或您需要的任何东西?请查看quartz附带的示例和/或quartz网站上的教程。这真的不难。此外,它还写了如何安排工作。这不是问题所在。mybe问题是在应用程序部署时触发该作业。我找不到关于那件事的任何文件。