Struts 2 + Spring 3 + Quartz 1.8 Пример планировщика

Struts 2 + Spring 3 + Quartz 1.8 Пример планировщика

В этом руководстве мы покажем вам, как интегрироватьStruts 2 + Spring 3 + Quartz 1.8.6.

Why NOT Quartz 2?
В настоящее время Spring 3 все еще НЕ поддерживает API Quartz 2, см. этотSPR-8581 bug report. Обновит эту статью снова, как только будет выпущена исправленная ошибка.

Используемые инструменты

  1. Весна 3.1.5.РЕЛИЗ

  2. Кварц 1.8.6

  3. Стойки 2.3.4

  4. Struts2-Spring-плагин 2.3.4

  5. Maven 3

  6. Затмение 4.2

1. Папка проекта

Вот окончательная структура папок проекта.

image

2. Библиотеки зависимостей

Интеграция аналогична этомуSpring 2.5.6 + Quartz 1.6, только зависимости Spring3 немного запутаны, прочтите Maven pom.xml ниже, чтобы узнать обо всех зависимостях, необходимых для разработки этого руководства.

См. Комментарии XML, чтобы понять, зачем вам эта банка.

Файл: pom.xml

  ...


  
  
    org.apache.struts
    struts2-core
    2.3.4
  

  
  
    org.quartz-scheduler
    quartz
    1.8.6
  

  
  
    org.springframework
    spring-core
    3.1.2.RELEASE
  

  
    org.springframework
    spring-context
    3.1.2.RELEASE
  

  
  
    org.springframework
    spring-context-support
    3.1.2.RELEASE
  

  
  
    org.springframework
    spring-web
    3.1.2.RELEASE
  

  
  
    org.springframework
    spring-tx
    3.1.2.RELEASE
  

  
  
    org.apache.struts
    struts2-spring-plugin
    2.3.4
  


  ...

3. Весна 3 + Кварц

Чтобы интегрировать как Spring3, так и Quartz, создайте класс extendsorg.springframework.scheduling.quartz.QuartzJobBean и реализует методexecuteInternal(), точно так же, как вы создаете задание планировщика в Quartz.

Файл: SchedulerJob.java

package com.example.quartz;

import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.springframework.scheduling.quartz.QuartzJobBean;

public class SchedulerJob extends QuartzJobBean
{

    protected void executeInternal(JobExecutionContext context)
    throws JobExecutionException {

        System.out.println("Struts 2.3.4 + Quartz 1.8.6 + Spring 3.1.2");

    }
}

File : applicationContext.xml - помещает весь планировщик Quartz и детали Spring вapplicationContext.xml. См. Подробности в комментариях XML.



  
  
    
  

  
  
    
    
  

  
  
    
        
            
        
    

    
        
            
        
    
  

4. Распорки 2 + пружина 3

Чтобы интегрироватьStruts 2 + Spring, просто поместите класс слушателяorg.springframework.web.context.ContextLoaderListener в файлweb.xml.

Note
Для подробностей прочтите этотStruts 2 + Spring integration example.

Файл: web.xml




    Struts 2 Web Application

    
      struts2
      
        org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
      
    

    
      struts2
      /*
    

    
      
        org.springframework.web.context.ContextLoaderListener
      
    

5. Demo

Готово, когда Strut2 запускается, он вызывает Spring и запускает заданное задание Quartz.

Jul 24, 2012 4:49:07 PM org.apache.coyote.AbstractProtocol start
INFO: Starting ProtocolHandler ["http-bio-8080"]
Jul 24, 2012 4:49:07 PM org.apache.coyote.AbstractProtocol start
INFO: Starting ProtocolHandler ["ajp-bio-8009"]
Jul 24, 2012 4:49:07 PM org.apache.catalina.startup.Catalina start
INFO: Server startup in 3430 ms
Struts 2.3.4 + Quartz 1.8.6 + Spring 3.1.2  //run this every 10 seconds.
Struts 2.3.4 + Quartz 1.8.6 + Spring 3.1.2
Struts 2.3.4 + Quartz 1.8.6 + Spring 3.1.2

Скачать исходный код

Скачать -Struts2-Spring3-Quartz-Example.zip (20 КБ).