Bonjour ,
j essais de réaliser des job qui se lance au démarrage du serveur Jonas.
En premier temps je me suis penché vers Quartz Scheduler. j'ai testé en java dur (un main et vas y) ça marchait. j'ai essayé dans un ejb Startup ça marche pas avec l'erreur Thread pool not specified. sachant que je l'ai bien spécifié dans le quartz.properties.
quartz.properties
Après , j'ai essayé les Schedule de l'EJB et non du Quartz, j obtiens cette erreur:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 org.quartz.scheduler.instanceName = MyScheduler org.quartz.threadPool.class=org.quartz.simpl.SimpleThreadPool org.quartz.threadPool.threadCount = 3 org.quartz.threadPool.threadPriority: 5 org.quartz.jobStore.class = org.quartz.simpl.RAMJobStore
La ligne 32 du code correspond à:
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 2011-12-06 09:45:56,203 : SessionFactory.createPoolItem : Unable to perform postconstruct on a new instance of the class 'xxx..job.Starter' java.lang.ClassFormatError: Absent Code attribute in method that is not native or abstract in class file javax/ejb/ScheduleExpression at java.lang.ClassLoader.defineClass1(Native Method) at java.lang.ClassLoader.defineClassCond(Unknown Source) at java.lang.ClassLoader.defineClass(Unknown Source) at java.security.SecureClassLoader.defineClass(Unknown Source) at java.net.URLClassLoader.defineClass(Unknown Source) at java.net.URLClassLoader.access$000(Unknown Source) at java.net.URLClassLoader$1.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(Unknown Source) at org.ow2.easybeans.loader.EasyBeansClassLoader.findClass(EasyBeansClassLoader.java:127) at java.lang.ClassLoader.loadClass(Unknown Source) at org.ow2.easybeans.loader.EasyBeansClassLoader.loadClass(EasyBeansClassLoader.java:197) at xxxx.xxx.job.Starter.startup(Starter.java:32)
Voici tout le code de la classe EJB qui comprend le schedule:
Code : Sélectionner tout - Visualiser dans une fenêtre à part ScheduleExpression scheduleExp = new ScheduleExpression().second("*/2").minute("*").hour("*");
Je suis sur JoNas. et je veux lancer des job au démarrage. c'est mon but
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 package xxx.job; import java.util.logging.Logger; import javax.annotation.PostConstruct; import javax.annotation.Resource; import javax.ejb.ScheduleExpression; import javax.ejb.Singleton; import javax.ejb.Startup; import javax.ejb.Timeout; import javax.ejb.Timer; import javax.ejb.TimerService; /** * Session Bean implementation class Starter */ @Singleton @Startup public class Starter { /** Logger. */ private static final transient Logger LOGGER = Logger.getLogger("Startup"); @Resource TimerService timerService; @PostConstruct private void startup() { // LOGGER.debug("END"); System.out.println("STARTED 1"); ScheduleExpression scheduleExp = new ScheduleExpression().second("*/2").minute("*").hour("*"); Timer timer = timerService.createCalendarTimer(scheduleExp); } @Timeout public void executerTraitement(Timer timer) { System.out.println("FAIT TON JOB !"); } }
Merci pour l'aide
Partager