Bonjour,
je suis débutant avec Spring, et je tente de l'utiliser pour créer un Job scannant un répertoire.
Lorsque ce job trouve un fichier xml ds ce repertoire, il doit l'envoyer dans une BlockingQueue, effectuer son traitement(3-4sec) puis l'effacer.
Probleme:
D'autres jobs concurrents se lancent pendant le 1er traitement, et tentent apres coup d'acceder au fichier maintenant effacé, d'où plantage...
Mon but ici serait de faire tourner uniquement un seul Job, mais le threadCount=1 n'a pas suffit.
voici mon applicationContext.xml:
Si vous avez des idées je suis preneur ^^
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 <bean name="ScanFileScheduler" class="org.springframework.scheduling.quartz.JobDetailBean"> <property name="jobClass" value="fr.orex.OxOpenReport.filesTraitement.ScanFileScheduler" /> <property name="jobDataAsMap"> <map> <!-- <entry key="message" value="traitement en cours" /> --> </map> </property> </bean> <bean id="ScanTrigger" class="org.springframework.scheduling.quartz.SimpleTriggerBean"> <property name="jobDetail" ref="ScanFileScheduler" /> <property name="startDelay" value="0" /> <property name="repeatInterval" value="500" /> </bean> <bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean"> <property name="quartzProperties"> <props> <!-- ThreadPool --> <prop key="org.quartz.threadPool.class">org.quartz.simpl.SimpleThreadPool</prop> <prop key="org.quartz.threadPool.threadCount">1</prop> <prop key="org.quartz.threadPool.threadPriority">9</prop> </props> </property> <property name="triggers"> <list> <ref bean="ScanTrigger" /> </list> </property> </bean>
Merci
Partager