IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Spring Java Discussion :

Configuration de Quartz


Sujet :

Spring Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif
    Femme Profil pro
    Étudiant
    Inscrit en
    Décembre 2011
    Messages
    64
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 64
    Par défaut Configuration de Quartz
    Bonjour
    je veux faire la configuration de l'api quartz via une interface web:En fait j'ai testé au débit statiquement chaque demi heure ça a marché mais lorsque j'ai fait la configuration le service dont j'ai voulu exécuter n'a pas travaillé ça reste s'exécuter chaque demi heure est ce que je dois arrêter le serveur et le démarrer après la saisie de la nouvelle expression de l'interface? voilà le code que j'ai utilisé:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    public void collectorCronScheduling(String expression) {
    		try {
    			triggerBean.setCronExpression(expression);
    			triggerBean.validate();
    			System.out.println("cron expression modifiée");
    			schedulerFactoryBean.start();
    			System.out.println("scheduler started");
    		} catch (ParseException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		} catch (SchedulerException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
     
    	}

  2. #2
    Membre Expert Avatar de jeffray03
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2008
    Messages
    1 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 501
    Par défaut
    peux-tu nous faire voir ton fichier de configuration, ainsi que le fichier de declaration de tes beans?
    Eric

  3. #3
    Membre actif
    Femme Profil pro
    Étudiant
    Inscrit en
    Décembre 2011
    Messages
    64
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 64
    Par défaut
    voila mon fichier de configuration "applicationContext.xml"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    <bean id="collectorTicketServiceImplJob"
    		class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
    		<property name="targetObject" ref="collectorTicketServiceImpl" />
    		<property name="targetMethod" value="ExtractTicketFromMail" />
    	</bean>
     
    	<bean id="collectorTicketServiceImplTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">
     
    		<property name="jobDetail" ref="collectorTicketServiceImplJob" />
    		<property name="cronExpression" value="0 0/30 * * * ?" />
    	</bean>
     
     
    	<bean id="collectorTicketServiceImplTriggerSchedular"
    		class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
     
    		<property name="triggers">
    			<list>
    				<ref bean="collectorTicketServiceImplTrigger" />
    			</list>
    		</property>
    	</bean>
    Pour le service
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    import java.text.ParseException;
    import java.util.List;
    import java.util.Properties;
     
    import javax.mail.Authenticator;
    import javax.mail.Flags;
    import javax.mail.Folder;
    import javax.mail.Message;
    import javax.mail.MessagingException;
    import javax.mail.PasswordAuthentication;
    import javax.mail.Session;
    import javax.mail.URLName;
    import javax.mail.internet.InternetAddress;
     
    import org.quartz.SchedulerException;
    import org.quartz.impl.StdScheduler;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.context.support.ClassPathXmlApplicationContext;
    import org.springframework.flex.remoting.RemotingDestination;
    import org.springframework.scheduling.quartz.CronTriggerBean;
    import org.springframework.scheduling.quartz.SchedulerFactoryBean;
    import org.springframework.stereotype.Service;
     
     
     
    @Service("collectorTicketServiceImpl")
    @RemotingDestination
    public class collectorTicketServiceImpl implements ticketCollectorService {
    	@Autowired
    	private TicketServiceImpl serviceTicket;
     
    	@Autowired
    	private TicketHistoryServiceImpl serviceHistory;
     
    	@Autowired
    	private TicketDao ticketDao;
     
    	@Autowired
    	private UserServiceImpl serviceUser;
     
    	@Autowired
    	private RoleServiceImpl roleService;
     
    	@Autowired
    	private StatusServiceImpl serviceStatus;
     
    	@Autowired
    	private PriorityServiceImpl servicePriority;
     
    	@Autowired
    	// collectorTicketServiceImplTrigger
    	private CronTriggerBean triggerBean;
     
    	@Autowired
    	private SchedulerFactoryBean schedulerFactoryBean;
     
    	private int collector = 0;
     
    	public int ExtractTicketFromMail() throws MessagingException, SFDBException {
    		System.out.println("service collector");
    		// Définition d'un URLName pour construire un lien
    		// URLName rep_Serveur = new
    		// URLName("pop3://support@pop.topnet.tn/Inbox");
    		URLName rep_Serveur = new URLName(
    				"pop3://info20111@pop.gmail.com/Inbox");
    		// Ouvrir une session avec le nom d'utilisateur et le mot de passe
    		Session session = Session.getDefaultInstance(new Properties(),
    				new Authenticator() {
    					public PasswordAuthentication getPasswordAuthentication() {
    						return new PasswordAuthentication(
    								"info20111@gmail.com", "info20111");
    					}
    				});
    		System.out.println("session ouverte");
     
    		// Accéder à la boite de réception
    		Folder inbox = session.getFolder(rep_Serveur);
    		if (inbox == null) {
    			System.out.println("Répertoire" + rep_Serveur.getFile()
    					+ " Introuvable");
    			// System.exit(1);
    			System.out.println("inbox vide");
    			collector = 0;
    		}
    		inbox.open(Folder.READ_ONLY);
     
    		// Lire les messages du Serveur
    		Message[] messages = inbox.getMessages();
     
    		for (int i = 0; i < messages.length; i++) {
    			TicketEntity ticket = new TicketEntity();
    			collector++;
    			// Les Informations de l'en-tête
    			String str = InternetAddress.toString(messages[i].getFrom());
    			int index = str.indexOf("<");
    			int end = str.indexOf(">");
    			if (index != -1) {
    				String mail = str.substring(index + 1, end);
    				System.out.println(mail);
    				UserEntity user = new UserEntity();
    				List<UserEntity> res = serviceUser.findUserByEmail(mail);
     
    				if (res.isEmpty() == false)
     
    				{
    					System.out.println("client trouvé");
    					user = (UserEntity) res.get(0);
     
    				} else {
    					System.out.println("client non trouvé");
    					Long id = Long.parseLong(String.valueOf(4));
    					RoleEntity guest = roleService.loadRoleById(id);
    					UserEntity utilisateur = new UserEntity();
    					utilisateur.setLogin("visiteur");
    					utilisateur.setPassword("visiteur");
    					utilisateur.setEmail(mail);
    					utilisateur.setRole(guest);
    					serviceUser.addUser(utilisateur);
    					user = utilisateur;
    				}
    				System.out.println("construction de ticket");
    				ticket.setCollectedByMail(true);
    				Long idNew = Long.parseLong(String.valueOf(1));
    				StatusEntity status = serviceStatus.loadStatusById(idNew);
    				ticket.setActualStatus(status);
    				java.util.Date date = new java.util.Date();
    				ticket.setDateCreation(date);
    				ticket.setTitle(messages[i].getSubject());
    				ticket.setDeadline(messages[i].getSentDate());
    				ticket.setDescription("pas de description");
    				Long idNormal = Long.parseLong(String.valueOf(2));
    				PriorityEntity priority = servicePriority
    						.loadPriorityById(idNormal);
    				ticket.setPriority(priority);
    				ticket.setUser(user);
    				serviceTicket.addTicketFromCollector(ticket);
    				TicketHistoryEntity history = new TicketHistoryEntity();
    				history.setTicket(ticket);
    				history.setStatus(status);
    				history.setDateStatus(date);
    				serviceHistory.addTicketHistory(history);
    				System.out
    						.println("ticket construite avec succès de l'utilisateur"
    								+ user.getEmail());
    			}
    		}
    		try {
    			for (int i = 0; i < messages.length; i++) {
    				messages[i].setFlag(Flags.Flag.DELETED, true);
    			}
    		} catch (Exception e) {
    			System.out.println(e.getMessage());
    		}
    		// Fermer la boîte de réception
    		inbox.close(false);
    		System.out.println("collector" + collector);
    		return collector;
     
    	}
     
    	@Override
    	public void collectorCronScheduling(String expression) {
    		try {
    			triggerBean.setCronExpression(expression);
    			triggerBean.validate();
    			System.out.println("cron expression modifiée");
    			schedulerFactoryBean.start();
    			System.out.println("scheduler started");
    		} catch (ParseException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		} catch (SchedulerException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
     
    	}
     
    	public CronTriggerBean getTriggerBean() {
    		return triggerBean;
    	}
     
    	public void setTriggerBean(CronTriggerBean triggerBean) {
    		this.triggerBean = triggerBean;
    	}
     
    	public SchedulerFactoryBean getSchedulerFactoryBean() {
    		return schedulerFactoryBean;
    	}
     
    	public void setSchedulerFactoryBean(
    			SchedulerFactoryBean schedulerFactoryBean) {
    		this.schedulerFactoryBean = schedulerFactoryBean;
    	}
     
    }

  4. #4
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    Il ne suffit pas de changer le bean spring pour changer le scheduling. Ce que fait spring c'est prendre le bean au moment où tu démarre quartz et initialiser quartz avec. Le bean ne sert plus après. Si tu veux modifier le scheduling d'un job déjà existant, il faut passer par les méthodes permettant de manipuler les jobs dans Quartz.

  5. #5
    Membre actif
    Femme Profil pro
    Étudiant
    Inscrit en
    Décembre 2011
    Messages
    64
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 64
    Par défaut
    Bonjour et merci pour ta réponse stp peux tu m'aider un peu plus (exemple etc) car je suis encore débutante et c'est la première fois que je travaille ceci

  6. #6
    Membre Expert Avatar de jeffray03
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2008
    Messages
    1 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 501
    Par défaut
    voici un exemple:
    La classe contenant le Job qui sera executé.
    j´ai utilisé les annotations.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    package job;
     
    import org.springframework.scheduling.annotation.Scheduled;
    import org.springframework.stereotype.Component;
     
    @Component("theJob")
    public class TheJob {
     
    	@Scheduled(cron = "3/10 * * * * ?")
    	public void runAction() {
    		System.out.println("Le Job c'est moi");
    	}
    }
    Classe contenant la methode main()
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    package quartz;
     
    import org.springframework.context.support.ClassPathXmlApplicationContext;
     
    /**
     * Hello world!
     */
    public class App {
    	public static void main(String[] args) {
    		new ClassPathXmlApplicationContext("applicationContext.xml");
    	}
    }
    fichier de configuration
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
    	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    	xmlns:context="http://www.springframework.org/schema/context"
    	xmlns:task="http://www.springframework.org/schema/task"
    	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
    		http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task-3.0.xsd
    		http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd">			
     
       <context:component-scan base-package="job"/>
       <task:annotation-driven/>		
     
    </beans>

Discussions similaires

  1. Configuration de Quartz/Spring
    Par didi dans le forum Spring
    Réponses: 23
    Dernier message: 20/09/2013, 19h36
  2. [Batch] Configuration d'un cronTrigger (OpenSymphony Quartz)
    Par Lorenzaccio dans le forum Spring
    Réponses: 3
    Dernier message: 15/04/2013, 22h21
  3. probleme de configuration avec Quartz 1.8.4
    Par denzelboy dans le forum Général Java
    Réponses: 3
    Dernier message: 15/12/2010, 08h47
  4. [Batch] Problème de configuration quartz avec un placeHolder Spring
    Par fab76000 dans le forum Spring
    Réponses: 6
    Dernier message: 08/06/2010, 11h45
  5. BDE : Configurer automatiquement le NETDIR
    Par Harry dans le forum Paradox
    Réponses: 10
    Dernier message: 29/07/2002, 11h33

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo