zoukankan      html  css  js  c++  java
  • quartz2.1.3+spring3.2.18.RELEASE 实现spring整合quartz第一天

      ps:这个版本问题真的很难搞,头疼不已。

      大概要点说一下:

     1   <dependency>
     2           <groupId>org.slf4j</groupId>
     3           <artifactId>slf4j-api</artifactId>
     4           <version>1.6.0</version>
     5       </dependency>
     6       <dependency>
     7           <groupId>org.slf4j</groupId>
     8           <artifactId>slf4j-simple</artifactId>
     9           <version>1.7.7</version>
    10       </dependency>
    11       <dependency>
    12           <groupId>org.slf4j</groupId>
    13           <artifactId>slf4j-log4j12</artifactId>
    14           <version>1.7.25</version>
    15       </dependency>
    16       <dependency>
    17           <groupId>log4j</groupId>
    18           <artifactId>log4j</artifactId>
    19           <version>1.2.16</version>
    20       </dependency>
    引入日志jar
     1 <spring.version>3.2.18.RELEASE</spring.version>
     2 
     3 <dependency>
     4             <groupId>org.springframework</groupId>
     5             <artifactId>spring-core</artifactId>
     6             <version>${spring.version}</version>
     7         </dependency>
     8         <dependency>
     9             <groupId>org.springframework</groupId>
    10             <artifactId>spring-expression</artifactId>
    11             <version>${spring.version}</version>
    12         </dependency>
    13         <dependency>
    14             <groupId>org.springframework</groupId>
    15             <artifactId>spring-beans</artifactId>
    16             <version>${spring.version}</version>
    17         </dependency>
    18         <dependency>
    19             <groupId>org.springframework</groupId>
    20             <artifactId>spring-aop</artifactId>
    21             <version>${spring.version}</version>
    22         </dependency>
    23         <dependency>
    24             <groupId>org.springframework</groupId>
    25             <artifactId>spring-context</artifactId>
    26             <version>${spring.version}</version>
    27         </dependency>
    28         <dependency>
    29             <groupId>org.springframework</groupId>
    30             <artifactId>spring-context-support</artifactId>
    31             <version>${spring.version}</version>
    32         </dependency>
    33         <dependency>
    34             <groupId>org.springframework</groupId>
    35             <artifactId>spring-tx</artifactId>
    36             <version>${spring.version}</version>
    37         </dependency>
    38         <dependency>
    39             <groupId>org.springframework</groupId>
    40             <artifactId>spring-jdbc</artifactId>
    41             <version>${spring.version}</version>
    42         </dependency>
    43         <dependency>
    44             <groupId>org.springframework</groupId>
    45             <artifactId>spring-orm</artifactId>
    46             <version>${spring.version}</version>
    47         </dependency>
    48         <dependency>
    49             <groupId>org.springframework</groupId>
    50             <artifactId>spring-oxm</artifactId>
    51             <version>${spring.version}</version>
    52         </dependency>
    53         <dependency>
    54             <groupId>org.springframework</groupId>
    55             <artifactId>spring-web</artifactId>
    56             <version>${spring.version}</version>
    57         </dependency>
    58         <dependency>
    59             <groupId>org.springframework</groupId>
    60             <artifactId>spring-webmvc</artifactId>
    61             <version>${spring.version}</version>
    62         </dependency>
    63         <dependency>
    64             <groupId>org.springframework</groupId>
    65             <artifactId>spring-webmvc-portlet</artifactId>
    66             <version>${spring.version}</version>
    67         </dependency>
    68         <dependency>
    69             <groupId>org.springframework</groupId>
    70             <artifactId>spring-test</artifactId>
    71             <version>${spring.version}</version>
    72             <scope>test</scope>
    73         </dependency>
    74         <dependency>
    75             <groupId>org.springframework</groupId>
    76             <artifactId>spring-aspects</artifactId>
    77             <version>${spring.version}</version>
    78         </dependency>
    引入spring jar
    1  <dependency>
    2             <groupId>org.quartz-scheduler</groupId>
    3             <artifactId>quartz</artifactId>
    4             <version>2.1.3</version>
    5 </dependency>
    引入quartz jar
      1 SET ANSI_NULLS ON
      2 GO
      3 SET QUOTED_IDENTIFIER ON
      4 GO
      5 SET ANSI_PADDING ON
      6 GO
      7 CREATE TABLE [dbo].[QRTZ_BLOB_TRIGGERS](
      8     [SCHED_NAME] [varchar](120) NOT NULL,
      9     [TRIGGER_NAME] [varchar](200) NOT NULL,
     10     [TRIGGER_GROUP] [varchar](200) NOT NULL,
     11     [BLOB_DATA] [image] NULL,
     12 PRIMARY KEY CLUSTERED 
     13 (
     14     [SCHED_NAME] ASC,
     15     [TRIGGER_NAME] ASC,
     16     [TRIGGER_GROUP] ASC
     17 )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
     18 ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
     19 
     20 GO
     21 SET ANSI_PADDING OFF
     22 GO
     23 /****** Object:  Table [dbo].[QRTZ_CALENDARS]    Script Date: 2019-1-10 9:45:58 ******/
     24 SET ANSI_NULLS ON
     25 GO
     26 SET QUOTED_IDENTIFIER ON
     27 GO
     28 SET ANSI_PADDING ON
     29 GO
     30 CREATE TABLE [dbo].[QRTZ_CALENDARS](
     31     [SCHED_NAME] [varchar](120) NOT NULL,
     32     [CALENDAR_NAME] [varchar](200) NOT NULL,
     33     [CALENDAR] [image] NOT NULL,
     34 PRIMARY KEY CLUSTERED 
     35 (
     36     [SCHED_NAME] ASC,
     37     [CALENDAR_NAME] ASC
     38 )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
     39 ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
     40 
     41 GO
     42 SET ANSI_PADDING OFF
     43 GO
     44 /****** Object:  Table [dbo].[QRTZ_CRON_TRIGGERS]    Script Date: 2019-1-10 9:45:58 ******/
     45 SET ANSI_NULLS ON
     46 GO
     47 SET QUOTED_IDENTIFIER ON
     48 GO
     49 SET ANSI_PADDING ON
     50 GO
     51 CREATE TABLE [dbo].[QRTZ_CRON_TRIGGERS](
     52     [SCHED_NAME] [varchar](120) NOT NULL,
     53     [TRIGGER_NAME] [varchar](200) NOT NULL,
     54     [TRIGGER_GROUP] [varchar](200) NOT NULL,
     55     [CRON_EXPRESSION] [varchar](200) NOT NULL,
     56     [TIME_ZONE_ID] [varchar](80) NULL,
     57 PRIMARY KEY CLUSTERED 
     58 (
     59     [SCHED_NAME] ASC,
     60     [TRIGGER_NAME] ASC,
     61     [TRIGGER_GROUP] ASC
     62 )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
     63 ) ON [PRIMARY]
     64 
     65 GO
     66 SET ANSI_PADDING OFF
     67 GO
     68 /****** Object:  Table [dbo].[QRTZ_FIRED_TRIGGERS]    Script Date: 2019-1-10 9:45:58 ******/
     69 SET ANSI_NULLS ON
     70 GO
     71 SET QUOTED_IDENTIFIER ON
     72 GO
     73 SET ANSI_PADDING ON
     74 GO
     75 CREATE TABLE [dbo].[QRTZ_FIRED_TRIGGERS](
     76     [SCHED_NAME] [varchar](120) NOT NULL,
     77     [ENTRY_ID] [varchar](95) NOT NULL,
     78     [TRIGGER_NAME] [varchar](200) NOT NULL,
     79     [TRIGGER_GROUP] [varchar](200) NOT NULL,
     80     [INSTANCE_NAME] [varchar](200) NOT NULL,
     81     [FIRED_TIME] [bigint] NOT NULL,
     82     [PRIORITY] [int] NOT NULL,
     83     [STATE] [varchar](16) NOT NULL,
     84     [JOB_NAME] [varchar](200) NULL,
     85     [JOB_GROUP] [varchar](200) NULL,
     86     [IS_NONCONCURRENT] [varchar](1) NULL,
     87     [REQUESTS_RECOVERY] [varchar](1) NULL,
     88 PRIMARY KEY CLUSTERED 
     89 (
     90     [SCHED_NAME] ASC,
     91     [ENTRY_ID] ASC
     92 )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
     93 ) ON [PRIMARY]
     94 
     95 GO
     96 SET ANSI_PADDING OFF
     97 GO
     98 /****** Object:  Table [dbo].[QRTZ_JOB_DETAILS]    Script Date: 2019-1-10 9:45:58 ******/
     99 SET ANSI_NULLS ON
    100 GO
    101 SET QUOTED_IDENTIFIER ON
    102 GO
    103 SET ANSI_PADDING ON
    104 GO
    105 CREATE TABLE [dbo].[QRTZ_JOB_DETAILS](
    106     [SCHED_NAME] [varchar](120) NOT NULL,
    107     [JOB_NAME] [varchar](200) NOT NULL,
    108     [JOB_GROUP] [varchar](200) NOT NULL,
    109     [DESCRIPTION] [varchar](250) NULL,
    110     [JOB_CLASS_NAME] [varchar](250) NOT NULL,
    111     [IS_DURABLE] [varchar](1) NOT NULL,
    112     [IS_NONCONCURRENT] [varchar](1) NOT NULL,
    113     [IS_UPDATE_DATA] [varchar](1) NOT NULL,
    114     [REQUESTS_RECOVERY] [varchar](1) NOT NULL,
    115     [JOB_DATA] [image] NULL,
    116 PRIMARY KEY CLUSTERED 
    117 (
    118     [SCHED_NAME] ASC,
    119     [JOB_NAME] ASC,
    120     [JOB_GROUP] ASC
    121 )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
    122 ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
    123 
    124 GO
    125 SET ANSI_PADDING OFF
    126 GO
    127 /****** Object:  Table [dbo].[QRTZ_LOCKS]    Script Date: 2019-1-10 9:45:58 ******/
    128 SET ANSI_NULLS ON
    129 GO
    130 SET QUOTED_IDENTIFIER ON
    131 GO
    132 SET ANSI_PADDING ON
    133 GO
    134 CREATE TABLE [dbo].[QRTZ_LOCKS](
    135     [SCHED_NAME] [varchar](120) NOT NULL,
    136     [LOCK_NAME] [varchar](40) NOT NULL,
    137 PRIMARY KEY CLUSTERED 
    138 (
    139     [SCHED_NAME] ASC,
    140     [LOCK_NAME] ASC
    141 )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
    142 ) ON [PRIMARY]
    143 
    144 GO
    145 SET ANSI_PADDING OFF
    146 GO
    147 /****** Object:  Table [dbo].[QRTZ_PAUSED_TRIGGER_GRPS]    Script Date: 2019-1-10 9:45:58 ******/
    148 SET ANSI_NULLS ON
    149 GO
    150 SET QUOTED_IDENTIFIER ON
    151 GO
    152 SET ANSI_PADDING ON
    153 GO
    154 CREATE TABLE [dbo].[QRTZ_PAUSED_TRIGGER_GRPS](
    155     [SCHED_NAME] [varchar](120) NOT NULL,
    156     [TRIGGER_GROUP] [varchar](200) NOT NULL,
    157 PRIMARY KEY CLUSTERED 
    158 (
    159     [SCHED_NAME] ASC,
    160     [TRIGGER_GROUP] ASC
    161 )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
    162 ) ON [PRIMARY]
    163 
    164 GO
    165 SET ANSI_PADDING OFF
    166 GO
    167 /****** Object:  Table [dbo].[QRTZ_SCHEDULER_STATE]    Script Date: 2019-1-10 9:45:58 ******/
    168 SET ANSI_NULLS ON
    169 GO
    170 SET QUOTED_IDENTIFIER ON
    171 GO
    172 SET ANSI_PADDING ON
    173 GO
    174 CREATE TABLE [dbo].[QRTZ_SCHEDULER_STATE](
    175     [SCHED_NAME] [varchar](120) NOT NULL,
    176     [INSTANCE_NAME] [varchar](200) NOT NULL,
    177     [LAST_CHECKIN_TIME] [bigint] NOT NULL,
    178     [CHECKIN_INTERVAL] [bigint] NOT NULL,
    179 PRIMARY KEY CLUSTERED 
    180 (
    181     [SCHED_NAME] ASC,
    182     [INSTANCE_NAME] ASC
    183 )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
    184 ) ON [PRIMARY]
    185 
    186 GO
    187 SET ANSI_PADDING OFF
    188 GO
    189 /****** Object:  Table [dbo].[QRTZ_SIMPLE_TRIGGERS]    Script Date: 2019-1-10 9:45:58 ******/
    190 SET ANSI_NULLS ON
    191 GO
    192 SET QUOTED_IDENTIFIER ON
    193 GO
    194 SET ANSI_PADDING ON
    195 GO
    196 CREATE TABLE [dbo].[QRTZ_SIMPLE_TRIGGERS](
    197     [SCHED_NAME] [varchar](120) NOT NULL,
    198     [TRIGGER_NAME] [varchar](200) NOT NULL,
    199     [TRIGGER_GROUP] [varchar](200) NOT NULL,
    200     [REPEAT_COUNT] [bigint] NOT NULL,
    201     [REPEAT_INTERVAL] [bigint] NOT NULL,
    202     [TIMES_TRIGGERED] [bigint] NOT NULL,
    203 PRIMARY KEY CLUSTERED 
    204 (
    205     [SCHED_NAME] ASC,
    206     [TRIGGER_NAME] ASC,
    207     [TRIGGER_GROUP] ASC
    208 )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
    209 ) ON [PRIMARY]
    210 
    211 GO
    212 SET ANSI_PADDING OFF
    213 GO
    214 /****** Object:  Table [dbo].[QRTZ_SIMPROP_TRIGGERS]    Script Date: 2019-1-10 9:45:58 ******/
    215 SET ANSI_NULLS ON
    216 GO
    217 SET QUOTED_IDENTIFIER ON
    218 GO
    219 SET ANSI_PADDING ON
    220 GO
    221 CREATE TABLE [dbo].[QRTZ_SIMPROP_TRIGGERS](
    222     [SCHED_NAME] [varchar](120) NOT NULL,
    223     [TRIGGER_NAME] [varchar](200) NOT NULL,
    224     [TRIGGER_GROUP] [varchar](200) NOT NULL,
    225     [STR_PROP_1] [varchar](512) NULL,
    226     [STR_PROP_2] [varchar](512) NULL,
    227     [STR_PROP_3] [varchar](512) NULL,
    228     [INT_PROP_1] [int] NULL,
    229     [INT_PROP_2] [int] NULL,
    230     [LONG_PROP_1] [bigint] NULL,
    231     [LONG_PROP_2] [bigint] NULL,
    232     [DEC_PROP_1] [numeric](13, 4) NULL,
    233     [DEC_PROP_2] [numeric](13, 4) NULL,
    234     [BOOL_PROP_1] [varchar](1) NULL,
    235     [BOOL_PROP_2] [varchar](1) NULL,
    236 PRIMARY KEY CLUSTERED 
    237 (
    238     [SCHED_NAME] ASC,
    239     [TRIGGER_NAME] ASC,
    240     [TRIGGER_GROUP] ASC
    241 )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
    242 ) ON [PRIMARY]
    243 
    244 GO
    245 SET ANSI_PADDING OFF
    246 GO
    247 /****** Object:  Table [dbo].[QRTZ_TRIGGERS]    Script Date: 2019-1-10 9:45:58 ******/
    248 SET ANSI_NULLS ON
    249 GO
    250 SET QUOTED_IDENTIFIER ON
    251 GO
    252 SET ANSI_PADDING ON
    253 GO
    254 CREATE TABLE [dbo].[QRTZ_TRIGGERS](
    255     [SCHED_NAME] [varchar](120) NOT NULL,
    256     [TRIGGER_NAME] [varchar](200) NOT NULL,
    257     [TRIGGER_GROUP] [varchar](200) NOT NULL,
    258     [JOB_NAME] [varchar](200) NOT NULL,
    259     [JOB_GROUP] [varchar](200) NOT NULL,
    260     [DESCRIPTION] [varchar](250) NULL,
    261     [NEXT_FIRE_TIME] [bigint] NULL,
    262     [PREV_FIRE_TIME] [bigint] NULL,
    263     [PRIORITY] [int] NULL,
    264     [TRIGGER_STATE] [varchar](16) NOT NULL,
    265     [TRIGGER_TYPE] [varchar](8) NOT NULL,
    266     [START_TIME] [bigint] NOT NULL,
    267     [END_TIME] [bigint] NULL,
    268     [CALENDAR_NAME] [varchar](200) NULL,
    269     [MISFIRE_INSTR] [smallint] NULL,
    270     [JOB_DATA] [image] NULL,
    271 PRIMARY KEY CLUSTERED 
    272 (
    273     [SCHED_NAME] ASC,
    274     [TRIGGER_NAME] ASC,
    275     [TRIGGER_GROUP] ASC
    276 )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
    277 ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
    278 
    279 GO
    280 SET ANSI_PADDING OFF
    281 GO
    282 INSERT [dbo].[QRTZ_CRON_TRIGGERS] ([SCHED_NAME], [TRIGGER_NAME], [TRIGGER_GROUP], [CRON_EXPRESSION], [TIME_ZONE_ID]) VALUES (N'quartzScheduler', N'triggerName1', N'triggerGroupName1', N'0/10 * * * * ?', N'Asia/Shanghai')
    283 INSERT [dbo].[QRTZ_CRON_TRIGGERS] ([SCHED_NAME], [TRIGGER_NAME], [TRIGGER_GROUP], [CRON_EXPRESSION], [TIME_ZONE_ID]) VALUES (N'quartzScheduler', N'triggerName2', N'triggerGroupName1', N'0 0 */1 * * ?', N'Asia/Shanghai')
    284 INSERT [dbo].[QRTZ_JOB_DETAILS] ([SCHED_NAME], [JOB_NAME], [JOB_GROUP], [DESCRIPTION], [JOB_CLASS_NAME], [IS_DURABLE], [IS_NONCONCURRENT], [IS_UPDATE_DATA], [REQUESTS_RECOVERY], [JOB_DATA]) VALUES (N'quartzScheduler', N'job1', N'jobGroup1', NULL, N'com.vimtech.quartz.scheduler.TempMessageProjJob', N'0', N'0', N'0', N'0', 0x230D0A23467269204465632032312031363A35373A32332043535420323031380D0A)
    285 INSERT [dbo].[QRTZ_JOB_DETAILS] ([SCHED_NAME], [JOB_NAME], [JOB_GROUP], [DESCRIPTION], [JOB_CLASS_NAME], [IS_DURABLE], [IS_NONCONCURRENT], [IS_UPDATE_DATA], [REQUESTS_RECOVERY], [JOB_DATA]) VALUES (N'quartzScheduler', N'job2', N'jobGroup1', NULL, N'com.vimtech.quartz.scheduler.AccessTokenJob', N'0', N'0', N'0', N'0', 0x230D0A23467269204465632032312031363A35393A30372043535420323031380D0A)
    286 INSERT [dbo].[QRTZ_LOCKS] ([SCHED_NAME], [LOCK_NAME]) VALUES (N'quartzScheduler', N'TRIGGER_ACCESS')
    287 INSERT [dbo].[QRTZ_TRIGGERS] ([SCHED_NAME], [TRIGGER_NAME], [TRIGGER_GROUP], [JOB_NAME], [JOB_GROUP], [DESCRIPTION], [NEXT_FIRE_TIME], [PREV_FIRE_TIME], [PRIORITY], [TRIGGER_STATE], [TRIGGER_TYPE], [START_TIME], [END_TIME], [CALENDAR_NAME], [MISFIRE_INSTR], [JOB_DATA]) VALUES (N'quartzScheduler', N'triggerName1', N'triggerGroupName1', N'job1', N'jobGroup1', NULL, 1545383200000, 1545383190000, 5, N'PAUSED', N'CRON', 1545382643000, 0, NULL, 0, 0x)
    288 INSERT [dbo].[QRTZ_TRIGGERS] ([SCHED_NAME], [TRIGGER_NAME], [TRIGGER_GROUP], [JOB_NAME], [JOB_GROUP], [DESCRIPTION], [NEXT_FIRE_TIME], [PREV_FIRE_TIME], [PRIORITY], [TRIGGER_STATE], [TRIGGER_TYPE], [START_TIME], [END_TIME], [CALENDAR_NAME], [MISFIRE_INSTR], [JOB_DATA]) VALUES (N'quartzScheduler', N'triggerName2', N'triggerGroupName1', N'job2', N'jobGroup1', NULL, 1545382800000, -1, 5, N'PAUSED', N'CRON', 1545382747000, 0, NULL, 0, 0x)
    289 ALTER TABLE [dbo].[QRTZ_BLOB_TRIGGERS]  WITH CHECK ADD FOREIGN KEY([SCHED_NAME], [TRIGGER_NAME], [TRIGGER_GROUP])
    290 REFERENCES [dbo].[QRTZ_TRIGGERS] ([SCHED_NAME], [TRIGGER_NAME], [TRIGGER_GROUP])
    291 GO
    292 ALTER TABLE [dbo].[QRTZ_CRON_TRIGGERS]  WITH CHECK ADD FOREIGN KEY([SCHED_NAME], [TRIGGER_NAME], [TRIGGER_GROUP])
    293 REFERENCES [dbo].[QRTZ_TRIGGERS] ([SCHED_NAME], [TRIGGER_NAME], [TRIGGER_GROUP])
    294 GO
    295 ALTER TABLE [dbo].[QRTZ_SIMPLE_TRIGGERS]  WITH CHECK ADD FOREIGN KEY([SCHED_NAME], [TRIGGER_NAME], [TRIGGER_GROUP])
    296 REFERENCES [dbo].[QRTZ_TRIGGERS] ([SCHED_NAME], [TRIGGER_NAME], [TRIGGER_GROUP])
    297 GO
    298 ALTER TABLE [dbo].[QRTZ_SIMPROP_TRIGGERS]  WITH CHECK ADD FOREIGN KEY([SCHED_NAME], [TRIGGER_NAME], [TRIGGER_GROUP])
    299 REFERENCES [dbo].[QRTZ_TRIGGERS] ([SCHED_NAME], [TRIGGER_NAME], [TRIGGER_GROUP])
    300 GO
    301 ALTER TABLE [dbo].[QRTZ_TRIGGERS]  WITH CHECK ADD FOREIGN KEY([SCHED_NAME], [JOB_NAME], [JOB_GROUP])
    302 REFERENCES [dbo].[QRTZ_JOB_DETAILS] ([SCHED_NAME], [JOB_NAME], [JOB_GROUP])
    303 GO
    引入quartz所需要的数据库表结构(sqlserver版的)
     1 package com.vimtech.bms.webchat.quartz.service;
     2 
     3 public interface QuartzService {
     4 
     5     /**
     6      * addJob(方法描述:添加一个定时任务) <br />
     7      * (方法适用条件描述: – 可选)
     8      * 
     9      * @param jobName
    10      *            作业名称
    11      * @param jobGroupName
    12      *            作业组名称
    13      * @param triggerName
    14      *            触发器名称
    15      * @param triggerGroupName
    16      *            触发器组名称
    17      * @param cls
    18      *            定时任务的class
    19      * @param cron
    20      *            时间表达式 void
    21      * @exception
    22      * @since 1.0.0
    23      */
    24     public void addJob(String jobName, String jobGroupName, String triggerName, String triggerGroupName, Class cls, String cron);
    25 
    26     /**
    27      * 
    28      * @param oldjobName 原job name
    29      * @param oldjobGroup 原job group
    30      * @param oldtriggerName 原 trigger name
    31      * @param oldtriggerGroup 原 trigger group
    32      * @param jobName
    33      * @param jobGroup
    34      * @param triggerName
    35      * @param triggerGroup
    36      * @param cron
    37      */
    38     public boolean modifyJobTime(String oldjobName, String oldjobGroup, String oldtriggerName, String oldtriggerGroup, String jobName, String jobGroup, String triggerName, String triggerGroup, String cron);
    39 
    40     /**
    41      * 修改触发器调度时间
    42      * @param triggerName  触发器名称
    43      * @param triggerGroupName  触发器组名称
    44      * @param cron cron表达式
    45      */
    46     public void modifyJobTime(String triggerName,
    47                               String triggerGroupName, String cron);
    48 
    49     
    50     /**
    51      * 暂停指定的任务
    52      * @param jobName 任务名称
    53      * @param jobGroupName 任务组名称 
    54      * @return
    55      */
    56     public void pauseJob(String jobName, String jobGroupName);
    57     
    58     /**
    59      * 恢复指定的任务
    60      * @param jobName 任务名称
    61      * @param jobGroupName 任务组名称 
    62      * @return
    63      */
    64     public void resumeJob(String jobName, String jobGroupName);
    65     
    66     /**
    67      * 删除指定组任务
    68      * @param jobName 作业名称
    69      * @param jobGroupName 作业组名称
    70      * @param triggerName 触发器名称
    71      * @param triggerGroupName 触发器组名称
    72      */
    73     public void removeJob(String jobName, String jobGroupName,
    74                           String triggerName, String triggerGroupName);
    75 
    76     
    77     /**
    78      * 开始所有定时任务。启动调度器
    79      */
    80     public void startSchedule();
    81 
    82     /**
    83      * 关闭调度器
    84      */
    85     public void shutdownSchedule();
    86 }
    service代码
      1 package com.vimtech.bms.webchat.quartz.service.impl;
      2 
      3 import lombok.Getter;
      4 import lombok.Setter;
      5 
      6 import org.quartz.*;
      7 
      8 import com.vimtech.bms.webchat.quartz.service.QuartzService;
      9 
     10 public class QuartzServiceImpl implements QuartzService{
     11     
     12     @Getter @Setter
     13     private Scheduler quartzScheduler;
     14 
     15     //添加一个定时任务
     16     @Override
     17     public void addJob(String jobName, String jobGroupName, String triggerName,
     18             String triggerGroupName, Class cls, String cron) {
     19         try {
     20             // 获取调度器
     21             Scheduler sched = quartzScheduler;
     22             // 创建一项作业
     23             JobDetail job = JobBuilder.newJob(cls)
     24                     .withIdentity(jobName, jobGroupName).build();
     25             // 创建一个触发器
     26             CronTrigger trigger = TriggerBuilder.newTrigger()
     27                     .withIdentity(triggerName, triggerGroupName)
     28                     .withSchedule(CronScheduleBuilder.cronSchedule(cron))
     29                     .build();
     30             // 告诉调度器使用该触发器来安排作业
     31             sched.scheduleJob(job, trigger);
     32             // 启动
     33             if (!sched.isShutdown()) {
     34                 sched.start();
     35             }
     36         } catch (Exception e) {
     37             throw new RuntimeException(e);
     38         }
     39     }
     40     
     41     /**
     42      * 修改定时器任务信息
     43      */
     44     @Override
     45     public boolean modifyJobTime(String oldjobName, String oldjobGroup, String oldtriggerName, String oldtriggerGroup, String jobName, String jobGroup,
     46             String triggerName, String triggerGroup, String cron) {
     47         try {
     48             Scheduler sched = quartzScheduler;
     49             CronTrigger trigger = (CronTrigger) sched.getTrigger(TriggerKey
     50                     .triggerKey(oldtriggerName, oldtriggerGroup));
     51             if (trigger == null) {
     52                 return false;
     53             }
     54 
     55             JobKey jobKey = JobKey.jobKey(oldjobName, oldjobGroup);
     56             TriggerKey triggerKey = TriggerKey.triggerKey(oldtriggerName,
     57                     oldtriggerGroup);
     58 
     59             JobDetail job = sched.getJobDetail(jobKey);
     60             Class jobClass = job.getJobClass();
     61             // 停止触发器
     62             sched.pauseTrigger(triggerKey);
     63             // 移除触发器
     64             sched.unscheduleJob(triggerKey);
     65             // 删除任务
     66             sched.deleteJob(jobKey);
     67             
     68             addJob(jobName, jobGroup, triggerName, triggerGroup, jobClass,
     69                     cron);
     70             
     71             return true;
     72         } catch (Exception e) {
     73             throw new RuntimeException(e);
     74         }
     75         
     76     }
     77 
     78     @Override
     79     public void modifyJobTime(String triggerName, String triggerGroupName,
     80             String time) {
     81         try {
     82             Scheduler sched = quartzScheduler;
     83             CronTrigger trigger = (CronTrigger) sched.getTrigger(TriggerKey
     84                     .triggerKey(triggerName, triggerGroupName));
     85             if (trigger == null) {
     86                 return;
     87             }
     88             String oldTime = trigger.getCronExpression();
     89             if (!oldTime.equalsIgnoreCase(time)) {
     90                 CronTrigger ct = (CronTrigger) trigger;
     91                 // 修改时间
     92                 ct.getTriggerBuilder()
     93                         .withSchedule(CronScheduleBuilder.cronSchedule(time))
     94                         .build();
     95                 // 重启触发器
     96                 sched.resumeTrigger(TriggerKey.triggerKey(triggerName,
     97                         triggerGroupName));
     98             }
     99         } catch (Exception e) {
    100             throw new RuntimeException(e);
    101         }
    102     }
    103 
    104     @Override
    105     public void removeJob(String jobName, String jobGroupName,
    106             String triggerName, String triggerGroupName) {
    107         try {
    108             Scheduler sched = quartzScheduler;
    109             // 停止触发器
    110             sched.pauseTrigger(TriggerKey.triggerKey(triggerName,
    111                     triggerGroupName));
    112             // 移除触发器
    113             sched.unscheduleJob(TriggerKey.triggerKey(triggerName,
    114                     triggerGroupName));
    115             // 删除任务
    116             sched.deleteJob(JobKey.jobKey(jobName, jobGroupName));
    117         } catch (Exception e) {
    118             throw new RuntimeException(e);
    119         }
    120     }
    121 
    122     @Override
    123     public void startSchedule() {
    124         try {
    125             Scheduler sched = quartzScheduler;
    126             sched.start();
    127         } catch (Exception e) {
    128             throw new RuntimeException(e);
    129         }
    130     }
    131 
    132     @Override
    133     public void shutdownSchedule() {
    134         try {
    135             Scheduler sched = quartzScheduler;
    136             if (!sched.isShutdown()) {
    137                 sched.shutdown();
    138             }
    139         } catch (Exception e) {
    140             throw new RuntimeException(e);
    141         }
    142     }
    143 
    144     @Override
    145     public void pauseJob(String jobName, String jobGroupName) {
    146         try {
    147             quartzScheduler.pauseJob( JobKey.jobKey(jobName, jobGroupName));
    148         } catch (SchedulerException e) {
    149             e.printStackTrace();
    150         }
    151     
    152     }
    153 
    154     @Override
    155     public void resumeJob(String jobName, String jobGroupName) {
    156         try {
    157             quartzScheduler.resumeJob(JobKey.jobKey(jobName, jobGroupName));
    158         } catch (SchedulerException e) {
    159             e.printStackTrace();
    160         }
    161     }
    162 
    163     
    164 }
    service实现类
      1 package com.vimtech.bms.webchat.quartz.action;
      2 
      3 import java.util.ArrayList;
      4 import java.util.HashMap;
      5 import java.util.List;
      6 import java.util.Map;
      7 import java.util.Set;
      8 
      9 import com.alibaba.fastjson.JSONObject;
     10 import com.vimtech.bms.common.util.UtilTools;
     11 import com.vimtech.bms.webchat.quartz.domian.JobEntity;
     12 import com.vimtech.bms.webchat.quartz.service.QuartzService;
     13 import com.vimtech.ui.BaseAction;
     14 import com.vimtech.ui.domain.Result;
     15 
     16 import org.quartz.*;
     17 import org.quartz.impl.matchers.GroupMatcher;
     18 import org.springframework.web.bind.annotation.RequestParam;
     19 
     20 import lombok.Getter;
     21 import lombok.Setter;
     22 
     23 public class QuartzController extends BaseAction{
     24 
     25     /**
     26      * 
     27      */
     28     private static final long serialVersionUID = 1L;
     29     @Getter @Setter
     30     private Scheduler quartzScheduler;
     31     
     32     @Getter @Setter
     33     private QuartzService quartzService;
     34     @Getter @Setter
     35     private String jobName;
     36     @Getter @Setter
     37     private String jobGroup;
     38     @Getter @Setter
     39     private String jobGroupName;
     40     @Getter @Setter
     41     private String triggerName;
     42     @Getter @Setter
     43     private String triggerGroupName;
     44     @Getter @Setter
     45     private String cron;
     46     @Getter @Setter
     47     private String clazz;
     48     
     49     /**
     50      * 定时列表页
     51      * 
     52      * @return
     53      * @throws SchedulerException
     54      */
     55     public String queryJob() throws SchedulerException {
     56         List<JobEntity> jobInfos = this.getSchedulerJobInfo();
     57         request().setAttribute("jobInfos", jobInfos);
     58         return "queryJob";
     59     }
     60     
     61     /**
     62      * 跳转到新增
     63      * 
     64      * @return
     65      * @throws SchedulerException
     66      * @throws ClassNotFoundException 
     67      */
     68     public String addPage() throws SchedulerException {
     69         return "addJob";
     70     }
     71 
     72     /**
     73      * 新增job
     74      * 
     75      * @return
     76      * @throws SchedulerException
     77      * @throws ClassNotFoundException 
     78      */
     79     public String addJob() throws SchedulerException, ClassNotFoundException {
     80         Class cls = Class.forName(clazz);
     81         quartzService.addJob(jobName, jobGroupName, triggerName, triggerGroupName, cls, cron);
     82         request().setAttribute("message", "添加任务成功!");
     83         request().setAttribute("opName", "添加任务!");
     84         return "message";
     85     }
     86 
     87     /**
     88      * 跳转到编辑
     89      * 
     90      * @return
     91      * @throws SchedulerException
     92      * @throws ClassNotFoundException 
     93      */
     94     public String editPage() throws SchedulerException {
     95         
     96         JobKey jobKey = JobKey.jobKey(jobName, jobGroup);
     97         JobDetail jd = quartzScheduler.getJobDetail(jobKey);
     98         List<CronTrigger> triggers = (List<CronTrigger>) quartzScheduler.getTriggersOfJob(jobKey);
     99         CronTrigger trigger = triggers.get(0);
    100         TriggerKey triggerKey = trigger.getKey();
    101         String cron = trigger.getCronExpression();
    102         Map<String, String> pd = new HashMap<String, String>();
    103         pd.put("jobName", jobKey.getName());
    104         pd.put("jobGroup", jobKey.getGroup());
    105         pd.put("triggerName", triggerKey.getName());
    106         pd.put("triggerGroupName", triggerKey.getGroup());
    107         pd.put("cron", cron);
    108         pd.put("clazz", jd.getJobClass().getCanonicalName());
    109         request().setAttribute("pd", pd);
    110         request().setAttribute("msg", "edit");
    111         
    112         return "editJob";
    113     }
    114     
    115     
    116     /**
    117      * 编辑job
    118      * 
    119      * @return
    120      * @throws SchedulerException
    121      * @throws ClassNotFoundException 
    122      */
    123     public String editJob() throws SchedulerException, ClassNotFoundException {
    124         Class cls = Class.forName(clazz);
    125         String oldjobName = request().getParameter("oldjobName");
    126         String oldjobGroup = request().getParameter("oldjobGroup");
    127         String oldtriggerName = request().getParameter("oldtriggerName");
    128         String oldtriggerGroup = request().getParameter("oldtriggerGroup");
    129         
    130         boolean result = quartzService.modifyJobTime(oldjobName, oldjobGroup, oldtriggerName, oldtriggerGroup, 
    131                 jobName, jobGroupName, triggerName, triggerGroupName, cron);
    132         if(result){
    133             request().setAttribute("message", "修改任务成功!");
    134         }else{
    135             request().setAttribute("message", "修改任务失败!");
    136         }
    137         request().setAttribute("opName", "更新任务!");
    138         return "message";
    139     }
    140 
    141 
    142     public String pauseJob(){
    143         JSONObject json = new JSONObject();
    144         if(UtilTools.isEmpty(jobName) || UtilTools.isEmpty(jobGroupName)){
    145             json.put("status", "wrong");
    146         }else{
    147             quartzService.pauseJob(jobName, jobGroupName);
    148                 json.put("status", "success");
    149         }
    150         this.setResult(new Result());
    151         this.getResult().setData(json.toJSONString());
    152         return "json";
    153     }
    154     
    155     public String resumeJob(){
    156         JSONObject json = new JSONObject();
    157         if(UtilTools.isEmpty(jobName) || UtilTools.isEmpty(jobGroupName)){
    158             json.put("status", "wrong");
    159         }else{
    160             quartzService.resumeJob(jobName, jobGroupName);
    161             json.put("status", "success");
    162         }
    163         this.setResult(new Result());
    164         this.getResult().setData(json.toJSONString());
    165         return "json";
    166     }
    167     
    168     public String deleteJob(){
    169         JSONObject json = new JSONObject();
    170         
    171         if(UtilTools.isEmpty(jobName) || UtilTools.isEmpty(jobGroupName) || 
    172                 UtilTools.isEmpty(triggerName) || UtilTools.isEmpty(triggerGroupName) ){
    173             json.put("status", "wrong");
    174         }else{
    175              quartzService.removeJob(jobName, jobGroupName, triggerName, triggerGroupName);
    176              json.put("status", "success");
    177         }
    178         this.setResult(new Result());
    179         this.getResult().setData(json.toJSONString());
    180         return "json";
    181     }
    182     
    183     
    184     private List<JobEntity> getSchedulerJobInfo() throws SchedulerException {
    185         List<JobEntity> jobInfos = new ArrayList<JobEntity>();
    186         List<String> triggerGroupNames = quartzScheduler.getTriggerGroupNames();
    187         for (String triggerGroupName : triggerGroupNames) {
    188             Set<TriggerKey> triggerKeySet = quartzScheduler
    189                     .getTriggerKeys(GroupMatcher
    190                             .triggerGroupEquals(triggerGroupName));
    191             for (TriggerKey triggerKey : triggerKeySet) {
    192                 Trigger t = quartzScheduler.getTrigger(triggerKey);
    193                 if (t instanceof CronTrigger) {
    194                     CronTrigger trigger = (CronTrigger) t;
    195                     JobKey jobKey = trigger.getJobKey();
    196                     JobDetail jd = quartzScheduler.getJobDetail(jobKey);
    197                     JobEntity jobInfo = new JobEntity();
    198                     jobInfo.setJobName(jobKey.getName());
    199                     jobInfo.setJobGroup(jobKey.getGroup());
    200                     jobInfo.setTriggerName(triggerKey.getName());
    201                     jobInfo.setTriggerGroupName(triggerKey.getGroup());
    202                     jobInfo.setCronExpr(trigger.getCronExpression());
    203                     jobInfo.setNextFireTime(trigger.getNextFireTime());
    204                     jobInfo.setPreviousFireTime(trigger.getPreviousFireTime());
    205                     jobInfo.setStartTime(trigger.getStartTime());
    206                     jobInfo.setEndTime(trigger.getEndTime());
    207                     jobInfo.setJobClass(jd.getJobClass().getCanonicalName());
    208                     // jobInfo.setDuration(Long.parseLong(jd.getDescription()));
    209                     Trigger.TriggerState triggerState = quartzScheduler
    210                             .getTriggerState(trigger.getKey());
    211                     jobInfo.setJobStatus(triggerState.toString());// NONE无,
    212                                                                     // NORMAL正常,
    213                                                                     // PAUSED暂停,
    214                                                                     // COMPLETE完全,
    215                                                                     // ERROR错误,
    216                                                                     // BLOCKED阻塞
    217                     JobDataMap map = quartzScheduler.getJobDetail(jobKey)
    218                             .getJobDataMap();
    219                     if (null != map&&map.size() != 0) {
    220                         jobInfo.setCount(Integer.parseInt((String) map
    221                                 .get("count")));
    222                         jobInfo.setJobDataMap(map);
    223                     } else {
    224                         jobInfo.setJobDataMap(new JobDataMap());
    225                     }
    226                     jobInfos.add(jobInfo);
    227                 }
    228             }
    229         }
    230         return jobInfos;
    231     }
    232     
    233 }
    action代码
  • 相关阅读:
    CentOS + java
    在 Centos7 用Jexus服务器 运行.Net Core 只需几部
    dotnet core 开发中遇到的问题
    Scratch3.0设计的插件系统(上篇)
    ASP.NET的编译原理
    搭建git服务器
    ubuntu安装Pillow
    MIT线性代数课程总结与理解-第三部分
    关于在ubuntu系统下显卡为goforce1060安装tensorflow(gpu)
    关于Clion中添加makefile相关参数
  • 原文地址:https://www.cnblogs.com/soul113/p/10509701.html
Copyright © 2011-2022 走看看