Quartz(GUI)图形界面程序----Quartz Web

摘要:
下载、设置并运行Quartz图形界面程序--Quartz Web 1。获取Quartz Web程序。早期的Quartz框架开发人员意识到GUI对于某个用户组是必要的。旧站点是http://sourceforge.net/projects/quartz ; 新网站可在http://www.quartz-scheduler.org/community/repository.html在上找到。运行石英/webapp目录下的Ant或Maven构建文件来构建此web程序,您将获得一个quartz.war包,但我们应该在打包之前修改其默认设置。默认情况下,QuartzWeb设置为内存存储。如果要更改为数据库存储,则必须修改Quartz的Quartz.properties设置文件,以便为其配置jdbc数据源或JNDI数据。

下载、设置和运行Quartz(GUI)图形界面程序----Quartz Web

一、获取Quartz Web程序(Quartz GUI)。
早期的 Quartz 框架开发者意识到一个 GUI 对于某类用户群体是必需的。几年前,一个 Web 应用被创立,它可用于管理 Quartz 框架。虽说是历经了几年有相当投入的开发,但不得不说的,总是时断时续的。近来出现有更多的要求对这个应用的更新与支持,因而又重新吸引了新的开发者自愿的工作并使之保持不断更新。这个应用就是知名的 Quartz Web 程序。Quartz Web 程序是作为 OpenSymphony 上 Quartz 源程序库的一部分。它曾经是放在 SourceForge 上的,但最近已迁移到新家了(译者注:在 SourceForge 仍可下载到)。旧的站点是 http://sourceforge.net/projects/quartz;新的站点(包括 Quartz Web 程序) 可在 http://www.quartz-scheduler.org/community/repository.html 上找到。

当前,还没有 Web 程序的二进制版,而且标准的 Quartz 下载中也不包括 Web 程序,所以你需要进入quartz的SVN(http://svn.terracotta.org/svn/quartz)源代码树下的webapp目录即为Quartz Web 的源码目录,下载到 Quartz 源代码树并使用 quartz/webapp目录下的 Ant 或Maven构建文件来构建这个 Web 程序。

最新版的quartz web采用了struts2+freemarker+spring2.5的架构,还用到了开源的sitemesh和dwr,并在web.xml中设置用org.quartz.ui.web.init.DefinitionInitializer启动quartz,具体设置如下:
<servlet>
   <servlet-name>DefinitionInitializer</servlet-name>
   <servlet-class>
    org.quartz.ui.web.init.DefinitionInitializer
   </servlet-class>
   <init-param>
    <param-name>definition-file</param-name>
    <param-value>(PATH_TO_DEFINITIONS_FILE)</param-value>
    <!-- 
     if (PATH_TO_DEFINITIONS_FILE) is left as such, definitions are loaded from 
     /WEB-INF/classes/JobDefinitions.xml 
    -->
   </init-param>
   <load-on-startup>1</load-on-startup>
</servlet>

二、修改设置。
运行quartz/webapp 目录下的 Ant 或Maven构建文件来构建这个 Web 程序,会得到一各为quartz.war的包,但在打包前我们应该修改其默认设置。默认下Quartz Web是被设置内存(非持久化) 存储,如果要改为数据库存诸则须修改quartz的设置文件quartz.properties,为其配置jdbc(需用到dbcp连接池,所以另需加入commons-dbcp和commons-pool包)数据源或JNDI数据。
下面为jobStore各种设置:

1、内存存储:
org.quartz.jobStore.misfireThreshold = 60000
org.quartz.jobStore.class = org.quartz.simpl.RAMJobStore

2、JDBC数据源(本例为oracle数据库,不同的数据库只要修改org.quartz.jobStore.driverDelegateClass的值为对应的数据库即可):
org.quartz.jobStore.misfireThreshold = 60000
org.quartz.jobStore.class = org.quartz.impl.jdbcjobstore.JobStoreTX
org.quartz.jobStore.driverDelegateClass = org.quartz.impl.jdbcjobstore.oracle.OracleDelegate
#org.quartz.jobStore.driverDelegateClass = org.quartz.impl.jdbcjobstore.DB2v7Delegate
org.quartz.jobStore.dataSource = myDS
org.quartz.jobStore.tablePrefix = QRTZ_
org.quartz.jobStore.isClustered = false
org.quartz.dataSource.myDS.driver = oracle.jdbc.driver.OracleDriver
org.quartz.dataSource.myDS.URL = jdbc:oracle:thin:@polarbear:1521:dev
org.quartz.dataSource.myDS.user = quartz
org.quartz.dataSource.myDS.password = quartz
org.quartz.dataSource.myDS.maxConnections = 5

3、JNDI数据源(本例为oracle数据库,不同的数据库只要修改org.quartz.jobStore.driverDelegateClass的值为对应的数据库即可):
org.quartz.jobStore.misfireThreshold = 60000
org.quartz.jobStore.class = org.quartz.impl.jdbcjobstore.JobStoreTX
org.quartz.jobStore.driverDelegateClass = org.quartz.impl.jdbcjobstore.oracle.OracleDelegate
#org.quartz.jobStore.driverDelegateClass = org.quartz.impl.jdbcjobstore.DB2v7Delegate
org.quartz.jobStore.dataSource = myDS
org.quartz.jobStore.tablePrefix = QRTZ_
org.quartz.jobStore.isClustered = false
org.quartz.dataSource.myDS.jndiURL = java:comp/env/jdbc/JNDITEMP

Quartz Web程序通过插件的形式设置日志记录和自动加载job配置文件,具体如下:
1、日志记录插件:
org.quartz.plugin.triggHistory.class = org.quartz.plugins.history.LoggingJobHistoryPlugin

2、用插件org.quartz.plugins.xml.JobInitializationPlugin加载job配置文件,org.quartz.plugin.jobInitializer.fileNames指定了位于classpath下的job配置文件的名称,这里配置了两个插件,分别指定了三个job配置文件jobs.xml、jobs2.xml,jobs3.xml:

org.quartz.plugin.jobInitializer.class = org.quartz.plugins.xml.JobInitializationPlugin
# init plugin will load jobs.xml as a classpath resource i.e. /jobs.xml if not found on file system
org.quartz.plugin.jobInitializer.fileNames=jobs.xml
org.quartz.plugin.jobInitializer.overWriteExistingJobs = false
org.quartz.plugin.jobInitializer.failOnFileNotFound = false
org.quartz.plugin.jobInitializer.scanInterval = 30 
# org.quartz.plugin.jobInitializer.wrapInUserTransaction = true

org.quartz.plugin.jobInitializerMultiple.class = org.quartz.plugins.xml.JobInitializationPlugin
# init plugin will load jobs.xml as a classpath resource i.e. /jobs.xml and jobs2.xml if not found on file system
org.quartz.plugin.jobInitializerMultiple.fileNames=jobs2.xml,jobs3.xml
org.quartz.plugin.jobInitializerMultiple.overWriteExistingJobs = false
org.quartz.plugin.jobInitializerMultiple.failOnFileNotFound = false
# org.quartz.plugin.jobInitializerMultiple.wrapInUserTransaction = true

Quartz Web程序通过JobDefinitions.xml来默认加载常用的job的定义,默认定义了三种quartz内置的job,分别为:
org.quartz.jobs.NativeJob
org.quartz.jobs.NoOpJob
org.quartz.jobs.ee.mail

下面是Quartz内置的的各种job:

 
Job 类Job 用法
org.quartz.jobs.FileScanJob检查某个指定文件是否变化,并在文
件被改变时通知到相应监听器的 Job
org.quartz.jobs.FileScanListener在文件被修改后通知 FileScanJob 的监听器
org.quartz.jobs.NativeJob用来执行本地程序(如 windows 下 .exe 文件) 的 Job
org.quartz.jobs.NoOpJob什么也不做,但用来测试监听器不是很有用的。
一些用户甚至仅仅用它来导致一个监听器的运行
org.quartz.jobs.ee.mail.SendMailJob使用 JavaMail API 发送 e-mail 的 Job
org.quartz.jobs.ee.jmx.JMXInvokerJob调用 JMX bean 上的方法的 Job
org.quartz.jobs.ee.ejb.EJBInvokerJob用来调用 EJB 上方法的 Job

三、运行。将打包好的war包部署到服务上,访问http://localhost:8080/quartz,然后用默认用户名:quartz 密码:quartz 登陆便可激忿进入系统。用户名和密码可在applicationContext.xml中修改,具体如下:
<bean class="org.quartz.ui.web.security.SimpleAuthenticator">
   <property name="username">
    <value>quartz</value>
   </property>
   <property name="password">
    <value>quartz</value>
   </property>
</bean>

Quartz Web 程序的截屏

1、Quartz Web 程序主界面的左上方展示了它所拥有的特征列表

Quartz(GUI)图形界面程序----Quartz Web第1张

2、Scheduler 控制界面,允许你启动、停止和暂停 Scheduler

Quartz(GUI)图形界面程序----Quartz Web第2张

四、与现有Web程序结合(我已结合过,可行)。
我们也可将Quartz web加入到现有的web程序中,具体做法为:
1、将Quartz web的所有jar包和设置文件和页面文件copy至现有Web工程中。
2、合并各设置文件(主要是:web.xml、struts.xml和applicationContext.xml等)
3、修改Quartz web各程序的访问的命名空间。
4、Quartz web并不完善,有好多明显的错误,好多页面有错误需要修改后才能通过gui成功配置各调度

免责声明:文章转载自《Quartz(GUI)图形界面程序----Quartz Web》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇《世界上最简单的会计书》sleep实现原理下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Centos7进不了图形化界面(亲测有效)

进入root用户 systemctl get-default //获取当前的默认target systemctl set-default graphical.target multi-user.target:设置当前的target,可选值有graphical.target,multi-user.target进入图形化界面multi_user.target:...

Android 7.1 GUI系统-窗口管理WMS-Surface管理(四)

Surface的管理 Surface是窗口能真正显示到物理屏幕上的基础,由surfaceflinger管理,可以通过WindowStateAnimator.java中的变量mDrawState来查看每个窗口相关的surface的状态。 surface有5中状态: WindowStateAnimator.java //Surface还没有创建。 static...

Appium(二):Node.js下载与安装、非GUI版本appium下载与安装、GUI版本appium下载与安装

1. 下载并安装Node.JS 进入官网:https://nodejs.org/en/。 由于我们是新手嘛,所以肯定是越稳定越好啦,所以选择下载LTS版本。 进入文件下点击文件就进入安装界面了,点击next。 接受许可协议,点击下一步按钮 我选择安装在默认位置,一直点击下一步,直到开始安装 就安装完成了,点击finish 要验证安装是否成功,请打...

在PyQt中构建 Python 菜单栏、菜单和工具栏

摘要:菜单、工具栏和状态栏是大多数GUI 应用程序的常见且重要的图形组件。您可以使用它们为您的用户提供一种快速访问应用程序选项和功能的方法。 本文分享自华为云社区《Python 和 PyQt:创建菜单、工具栏和状态栏》,作者:Yuchuan。 在使用 Python 和PyQt开发图形用户界面 (GUI)应用程序时,您将使用的一些最有用和最通用的图形元素是...

Quartz.NET简介

概述 Quartz.NET是一个开源的作业调度框架,非常适合在平时的工作中,定时轮询数据库同步,定时邮件通知,定时处理数据等。 Quartz.NET允许开发人员根据时间间隔(或天)来调度作业。它实现了作业和触发器的多对多关系,还能把多个作业与不同的触发器关联。整合了 Quartz.NET的应用程序可以重用来自不同事件的作业,还可以为一个事件组合多个作业。 参...

使用java配置定时任务的几种配置方式及示例

Spring定时器,主要有两种实现方式,包括Java Timer定时和Quartz定时器! 1.Java Timer定时 首先继承java.util.TimerTask类实现run方法 package com.land; import java.util.Date;import java.util.TimerTask; public class Timer...