|\| | |-| € [)

Category: spring

Le scheduling avec Spring et Quartz

Une des solutions Java pour faire du scheduling est l’utilisation d’un des frameworks disponible sur le marché. La solution que j’ai testé pour vous est celle utilisant Spring et Quartz.

Pour commencer les dépendances Maven : 😀

  1. <properties>
  2.         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  3.         <spring.version>3.0.1.RELEASE</spring.version>
  4.     </properties>
  5.  
  6.     <dependencies>
  7.         <dependency>
  8.             <groupId>org.springframework</groupId>
  9.             <artifactId>spring-core</artifactId>
  10.             <version>${spring.version}</version>
  11.         </dependency>
  12.         <dependency>
  13.             <groupId>org.springframework</groupId>
  14.             <artifactId>spring-context</artifactId>
  15.             <version>${spring.version}</version>
  16.         </dependency>
  17.         <dependency>
  18.             <groupId>org.springframework</groupId>
  19.             <artifactId>spring-context-support</artifactId>
  20.             <version>${spring.version}</version>
  21.         </dependency>
  22.         <dependency>
  23.             <groupId>org.springframework</groupId>
  24.             <artifactId>spring-tx</artifactId>
  25.             <version>${spring.version}</version>
  26.         </dependency>
  27.         <dependency>
  28.             <groupId>org.quartz-scheduler</groupId>
  29.             <artifactId>quartz</artifactId>
  30.             <version>1.8.5</version>
  31.         </dependency>
  32.         <dependency>
  33.             <groupId>junit</groupId>
  34.             <artifactId>junit</artifactId>
  35.             <version>3.8.1</version>
  36.             <scope>test</scope>
  37.         </dependency>
  38.     </dependencies>

Par la suite, nous allons définir l’objet qui sera utilisé par notre Scheduler.

  1. package com.nihed.cronapplication.task;
  2.  
  3. import java.util.Date;
  4.  
  5. public class Task1 {
  6.  
  7.     public void runTask() {
  8.         System.out.println("Task1 "+new Date());
  9.     }
  10. }

Puis, nous allons écrire le fichier de configuration de Spring ou nous avons configurer l’exécution de la méthode runTask toutes les 5 secondes. Pour cela, nous avons utilisé une écriture qui ressemble Cron “0/5 * * * * ?”

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <beans xmlns="http://www.springframework.org/schema/beans"
  3.        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4.  
  5.        xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
  6. ">
  7.    
  8.     <!– Trigger 1 –>
  9.     <bean id="task1" class="com.nihed.cronapplication.task.Task1" />
  10.    
  11.     <bean id="jobTask1" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean" >
  12.         <property name="targetObject" ref="task1" />
  13.         <property name="targetMethod" value="runTask"/>
  14.         <property name="concurrent" value="false" />
  15.     </bean>
  16.     <!– lancement tous les 5 secondes –>
  17.     <bean id="cronTrigger1" class="org.springframework.scheduling.quartz.CronTriggerBean">
  18.         <property name="jobDetail" ref="jobTask1" />
  19.         <property name="cronExpression" value="0/5 * * * * ?" />
  20.     </bean>
  21.    
  22.     <!– Scheduler Configuration –>
  23.     <bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
  24.         <property name="triggers" >
  25.             <list>
  26.                 <ref bean="cronTrigger1"/>
  27.             </list>
  28.         </property>
  29.     </bean>
  30.  
  31.    
  32. </beans>

Enfin, un petit main pour tester notre application.

  1. package com.nihed.cronapplication;
  2.  
  3. import org.springframework.context.support.ClassPathXmlApplicationContext;
  4.  
  5. public class App
  6. {
  7.     public static void main( String[] args )
  8.     {
  9.         new ClassPathXmlApplicationContext("SpringXMLConfig.xml");
  10.  
  11.     }
  12. }

Spring JSR 286

L’équipe de Spring nous promet le support de la spécification JSR 286 dans sa version 3 de Spring Portlet MVC.
La chose la plus importante dans cette spécification pour moi est la communication entre les portlets

Lien de la news

Spring Portlet sur liferay

Je vous ai promis un exemple. Le voila malgré un petit retard. je m’excuse.
Ce code a était fait sur IDE NetBeans 6.1 RC1 en utilisant Spring avec dépendance 2.5.1.
dans build.xml il faut modifier spring.root

  1. <property name="spring.root" value="C:/Users/hp/Desktop/liferay/spring-framework-2.5.1"/>

pour pointer sur l’emplacement de spring.
Lien : sample spring

Copyright © 2017 |\| | |-| € [)

Theme by Anders NorenUp ↑