springMVC+Quartz+mybatis+mysql+DWZ可视化定时器控制-stepOne

来源:互联网 发布:隐藏php版本 编辑:程序博客网 时间:2024/06/05 00:08

第一次写博客...

本人知识有限,对于文中出现的各种问题,请各位看官给予包容,也希望您给我指出我的问题所在。

最近项目遇到定时对账方面的功能需求,首先想到的肯定是用定时器咯。之前对Quartz有所了解,那么就用它吧。

开发中发现,项目部署完,所有定时器的状态都是不可控,无法监视的。这里用web界面可视化的方式对所有定时器进行监控,控制。

没图说个jb,先最终效果图:






一、涉及技术

1.数据库(mysql)

    因为是正规的项目,所以对定时器任务的存储肯定是需要的,据我所知Quartz有两种job存储方式
a:RAMJobStore(存储在内存)   b:JobStoreTX(存储在数据库)

    那么我就选用第二种--JobStoreTX,将定时器所需数据保存在数据库中。这里我选的是mysql。

2.项目框架(Spring MVC)

3.持久层(mybatis)

4.定时器(Quartz)

5.富客户端(DWZ)

二、环境搭建

1.数据库

    数据库使用mysql5.0,首先建立数据库(quartzweb)。然后导入quartz官方提供的mysql所需的表以及表结构,字段(quartz使用2.2.1版本。数据库方面信息在doc/dbTables目录)。这里只列出相关表,执行语句参考附件。

        a:QRTZ_FIRED_TRIGGERS

        b:QRTZ_PAUSED_TRIGGER_GRPS

        c:QRTZ_SCHEDULER_STATE

        d:QRTZ_LOCKS

        e:QRTZ_SIMPLE_TRIGGERS

        f:QRTZ_SIMPROP_TRIGGERS

        g:QRTZ_CRON_TRIGGERS

        h:QRTZ_BLOB_TRIGGERS

        i:QRTZ_TRIGGERS

        j:QRTZ_JOB_DETAILS

        k:QRTZ_CALENDARS

    除此之外,还需要一个管理各种job的定时器配置表(config)

  

DROP TABLE IF EXISTS `config`;CREATE TABLE `config` (  `CID` varchar(32) COLLATE utf8_bin NOT NULL,  `JOB_NAME` varchar(200) COLLATE utf8_bin NOT NULL,  `JOB_GROUP` varchar(200) COLLATE utf8_bin NOT NULL,  `TRIGGER_NAME` varchar(200) COLLATE utf8_bin NOT NULL,  `TRIGGER_GROUP` varchar(200) COLLATE utf8_bin NOT NULL,  `JOB_CLASS_NAME` varchar(250) COLLATE utf8_bin NOT NULL,  `CRON` varchar(20) COLLATE utf8_bin DEFAULT NULL,  `NEXT_FIRE_TIME` bigint(13) DEFAULT NULL,  `PREV_FIRE_TIME` bigint(13) DEFAULT NULL,  `TRIGGER_STATE` varchar(16) COLLATE utf8_bin DEFAULT 'WAITING',  `TRIGGER_TYPE` varchar(8) COLLATE utf8_bin DEFAULT NULL,  `START_TIME` bigint(13) DEFAULT NULL,  `END_TIME` bigint(13) DEFAULT NULL,  `DESCRIPTION` varchar(250) COLLATE utf8_bin DEFAULT NULL,  PRIMARY KEY (`JOB_NAME`,`JOB_GROUP`,`TRIGGER_NAME`,`TRIGGER_GROUP`,`CID`)) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;

2.项目框架

项目框架采用spring mvc模式。关于spring mvc的配置请参考csdn。

最简单的spring mvc

项目工程截图:




3.持久层(mybatis)

    引入相关jar

<!-- mybatis --><dependency><groupId>org.aspectj</groupId><artifactId>aspectjweaver</artifactId><version>1.6.2</version></dependency><dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>3.0.5</version></dependency><dependency><groupId>org.mybatis.generator</groupId><artifactId>mybatis-generator-core</artifactId><version>1.3.1</version></dependency><dependency><groupId>org.mybatis</groupId><artifactId>mybatis-spring</artifactId><version>1.0.1</version></dependency>


配置相关:

<!-- 数据源配置,使用c3p0数据库连接池 --><bean id="dataSource_quartz" class="com.mchange.v2.c3p0.ComboPooledDataSource">        <property name="driverClass" value="${bke.jdbc.driver}" /><property name="jdbcUrl" value="${bke.jdbc.url}" /><property name="user" value="${bke.jdbc.username}" /><property name="password" value="${bke.jdbc.password}" /><property name="initialPoolSize" value="1" /> <property name="maxPoolSize" value="5" /><property name="minPoolSize" value="1" /> <property name="maxIdleTime" value="10" />    <property name="acquireIncrement" value="2"/> <property name="acquireRetryAttempts" value="0"/> <property name="acquireRetryDelay" value="3000"/> <property name="testConnectionOnCheckin" value="true"/>  <property name="testConnectionOnCheckout" value="true"/><property name="preferredTestQuery" value="SELECT 1 FROM DUAL" /><property name="idleConnectionTestPeriod" value="60"/><property name="checkoutTimeout" value="0"/></bean><!-- MyBatis配置 --><bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"><property name="dataSource" ref="dataSource_quartz" /><property name="configLocation" value="classpath:mybatis-config.xml" /></bean><!-- 自动扫描mapper接口 --><bean name="exppay_dao" class="org.mybatis.spring.mapper.MapperScannerConfigurer"><property name="basePackage" value="com.kitikousei.quartz.**.dao" /><property name="sqlSessionFactory" ref="sqlSessionFactory" /></bean><!-- Spring事务管理 --><bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"><property name="dataSource" ref="dataSource_quartz" /></bean><!-- Spring事务管理使用注解驱动 --><tx:annotation-driven transaction-manager="transactionManager" />

4.定时器(Quartz)

    引入相关jar

<!-- quartz --><dependency>    <groupId>org.quartz-scheduler</groupId>    <artifactId>quartz</artifactId>    <version>2.2.1</version></dependency><div style="text-align: left;"></div><dependency>    <groupId>org.quartz-scheduler</groupId>    <artifactId>quartz-jobs</artifactId>    <version>2.2.1</version></dependency>



未完....

0 0
原创粉丝点击