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?
現在、Spring3はQuartz2 APIをまだサポートしていません。このSPR-8581 bug reportを参照してください。 修正されたバグがリリースされたら、この記事を再度更新します。

使用したツール

  1. Spring 3.1.5.RELEASE

  2. クォーツ1.8.6

  3. Struts 2.3.4

  4. Struts2-spring-plugin 2.3.4

  5. メーベン3

  6. Eclipse 4.2

1. プロジェクトフォルダ

最終的なプロジェクトフォルダー構造は次のとおりです。

image

2. 依存ライブラリ

統合はこのSpring 2.5.6 + Quartz 1.6と似ていますが、Spring3の依存関係が少し厄介です。このチュートリアルを開発するために必要なすべての依存関係については、以下のMavenpom.xmlをお読みください。

そのjarが必要な理由を理解するには、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の両方を統合するには、Quartzでスケジューラジョブを作成するのと同じように、org.springframework.scheduling.quartz.QuartzJobBeanを拡張し、executeInternal()メソッドを実装するクラスを作成します。

ファイル: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. Struts 2 + Spring 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(20KB)。