我已在我的应用程序中成功使用 quartz 。 基本上,我将 quartz 捆绑在 webapp1 内,该 webapp1 在 Jboss 内运行。
但是我们在 jboss 中运行了另一个 webapp2,它也需要有quartz 作业
现在我需要做的是让quartz调度程序作为某种服务在jboss中运行,并且两个web应用程序都应该能够 在单个 quartz 调度程序上注册他们的作业。
下面是我的 webapp1 的相关 spring 配置,到目前为止一直有效。
<bean id="qtzScheduler"
class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="dataSource">
<ref bean="jndiDataSource" />
</property>
<property name="applicationContextSchedulerContextKey">
<value>applicationContext</value>
</property>
<property name="transactionManager">
<ref bean="transactionManager" />
</property>
<property name="schedulerName" value="webapp1" />
</bean>
<bean id="wrapperScheduler" class="uk.fa.quartz.schedule.ServiceScheduler">
<property name="scheduler">
<ref bean="qtzScheduler" />
</property>
</bean>
<bean id="jndiDataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiName">
<value>java:/FmManagerDS</value>
</property>
</bean>
当我必须安排工作时,代码如下:
WrapperScheduler scheduler = (WrapperScheduler) ctx.getBean("wrapperScheduler");
scheduler.scheduleCronJob(job, jobName + "CronTrigger", WrapperScheduler.TRIGGER_GROUP, cronExpression);
现在我不想在 webapp2 中再次定义相同的调度程序,这将导致 2 个quartz 调度程序在 jboss 中运行。
有人知道该怎么做吗? 我在互联网上看到一个例子,如下Link我认为这是在做我想做的事。 但我不明白如何使用 spring 源中定义的数据源将其与我的系统集成。 如果有人可以分享配置或向我指出互联网上正确的资源,我将非常感激。
最佳答案
link您引用解释如何访问Quartz调度程序服务built into JBoss 。我从来没有使用过这种方法,但基本上你让 JBoss 处理你的调度程序、数据源和它周围的一切。这使得利用作业调度变得非常容易,而无需进行所有的配置工作 - 但不是很灵活,并且您的应用程序不再是独立的。
就您的情况而言,我看到两个值得研究的选项:
集群 Quartz 调度程序
将两个 Web 应用程序配置为 run in a cluster 。两个应用程序将共享相同的数据库,并将运行彼此定义的作业。由于以下几个原因,这可能不适合您:
两个应用程序必须能够运行彼此定义的作业 - 例如作业类别必须在 CLASSPATH 上可用
您仍然需要在两个应用程序中定义 Quartz 配置(不过您可以轻松共享配置,例如通过将 XML 配置提取到单独的文件中)
两个应用程序都将维护单独的线程池
集群更适合在多台机器上运行的同类应用程序,而不是在单个节点上运行的异构应用程序。
远程调度程序
quartz 有一个 built-in support for remote schedulers通过 rmi 。基本上,一个应用程序托管成熟的 Quartz 服务器,而另一个应用程序连接到该服务器。这对您来说似乎是一种更好的方法(让我们称之为“主从”),因为只有一个应用程序管理调度程序,而另一个应用程序使用现有的调度程序。
参见:RemoteScheduler
.
关于spring - quartz jboss spring 多个 webapp,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11936797/