zoukankan      html  css  js  c++  java
  • javaspring和quartz

         这两天一直琢磨着学学spring和quartz,主要是为了能写一个贴合自己需要的监控程序。同时也熟悉一下系统用到的技术。其中绕了不少弯路,昨晚弄到1点多,都没搞定,今天终于算是整出了hello world。由于我用的是eclipse,所以spring需要自己配置,如果是myeclipse,那基本上不用看我的帖子了

         首先,让spring框架运转起来,可以参看一下:《Spring在Web应用中的配置》。

         1、下载spring、quartz。网址这里就不贴了,网上到处都有,只是要注意一下版本,不同版本spring的web.xml配置不一样。

         2、把spring配置到工程中,把spring.jar(或者spring-sources.jar)复制到WEB-INF/lib目录下,让系统能找到该类。

         3、编辑web.xml,把spring的servlet配置到系统,让spring框架能运转起来。配置如下:

    1<servlet>
    2    <servlet-name>spring</servlet-name>
    3    <servlet-class>org.springframework.web.context.ContextLoaderServlet</servlet-class>
    4    <load-on-startup>1</load-on-startup>
    5</servlet>
    6<servlet-mapping>
    7    <servlet-name>spring</servlet-name>
    8    <url-pattern>*.do</url-pattern>
    9</servlet-mapping>
         需要注意的是,第3行的内容根据spring的版本不同似乎要有不同配置,我用的是2.5.5版,如果是低版本必须配置成下面这样,两者不能兼容。
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>

         4、在WEB-INF目录下新建spring的配置文件,同样的因为版本不同默认的配置文件名也不一样,低版本的是:spring-servlet.xml,2.5.5的是:applicationContext.xml。这个文件名也可以不同,可以在web.xml中加入配置:

    <context-param>
        
    <param-name>contextConfigLocation</param-name>
        
    <param-value>/WEB-INF/spring.xml</param-value>
    </context-param>

         5、根据spring的协议配置xml,让spring 运行起来,这个不属于这篇帖子讨论的内容。

         然后就是配置quartz了,spring内置了quartz,只要通过简单的配置applicationContext.xml及少量编程就能让quartz在spring框架下运转。quartz的介绍挺多的,这就提两点:一是quartz是任务调度的框架,有两种调度方式:simple和cron模式,simple方式和timertask类似,采用设置interval方式进行调度,而cron可以特有的语法很详细的定制调度执行时间。详细介绍请见《Spring使用Quartz配置调度事务》。另外一点就是注入到quartz框架的任务方式有两种,一种是调用特定方法,这种方法很简单,不要集成quartz的类,可以通过配置文件直接调用的自己编写的类,我用的就是这种方法;另外一种就是继承QuartzJobBean类来完成任务的调度,这种方法虽然复杂了一些,但更灵活,请参看《在Spring中使用Quartz调度器》。下面是我的步骤:

         1、quartz内置在spring中,不需要再单独下载,只需要配置applicationContext.xml如下:

     1 <beans>
     2 <bean id="firstJob" class="com.mc.job.First"></bean>
     3 <!--  定义目标bean和bean中的方法  -->
     4 <bean id="Job" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
     5     <property name="targetObject">
     6         <ref local="firstJob"/>
     7     </property>
     8     <property name="targetMethod">
     9 <!--  要执行的方法名称  -->
    10         <value>Count</value>
    11     </property>
    12 </bean>
    13 <!--定义触发的时间--> 
    14 <bean id="cron" class="org.springframework.scheduling.quartz.CronTriggerBean"> 
    15     <property name="jobDetail"> 
    16     <ref  bean="Job"/> 
    17     </property>
    18     <property name="cronExpression">
    19         <value>0-59 * * * * ?</value>
    20     </property>
    21 </bean>
    22 <!--  管理触发器  -->
    23 <bean autowire="no"  class="org.springframework.scheduling.quartz.SchedulerFactoryBean"> 
    24     <property name="triggers"> 
    25     <list>
    26         <ref local="cron"/>
    27     </list>
    28     </property>
    29 </bean>
    30 </beans>

         2、编写自己的类First,如下:

     1package com.mc.job;
     2
     3public class First {
     4    static long Count=0;
     5    public First()
     6    {
     7        System.out.println("Bean initialized.");
     8    }

     9    public void doFirst()
    10    {
    11        Count();
    12    }

    13    public void Count(){
    14        Count++;
    15        System.out.print("Count=");
    16        System.out.println(Count);
    17    }

    18}

         需要说明的有几点:

         1、自己的First类作为一个bean在spring中生成,并注入到org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean类中执行相关方法,需要执行的任务在该方法中实现,我的代码只是输出了一个数字。

         2、触发时间需要填写表达式,该表达式的格式网上很多,我这就不再说了,程序中是每秒调用一次。

         3、调试的过程中发现报出了异常,找不到某个类,开始百思不得其解,后来才反应过来,在其他quartz的介绍中提到quartz用到了其他第三方组件,需要注意这些组件与工程自身用到的相同组件间的版本冲突,我的情况正好相反,我没用到哪些组件,所以报出异常,把quartz中相关的jar包复制到lib目录下解决问题。

  • 相关阅读:
    Exchange ProxyLogon漏洞分析
    Java安全之Dubbo反序列化漏洞分析
    c# 基础语法
    Java安全之Axis漏洞分析
    c# 反射调用
    Exchange CVE20200688代码执行漏洞分析
    Windows上使用pm2运行Net Core项目
    重新点亮shell————测试命令[六]
    重新点亮shell————sed其他命令[十一]
    重新点亮shell————awk 控制语句[十三]
  • 原文地址:https://www.cnblogs.com/badwood316/p/1401089.html
Copyright © 2011-2022 走看看