Erreur de pool avec EJB3 et quartz sous JoNAS
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
Code:
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 |
Après , j'ai essayé les Schedule de l'EJB et non du Quartz, j obtiens cette erreur:
Code:
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) |
La ligne 32 du code correspond à:
Code:
ScheduleExpression scheduleExp = new ScheduleExpression().second("*/2").minute("*").hour("*");
Voici tout le code de la classe EJB qui comprend le schedule:
Code:
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 !");
}
} |
Je suis sur JoNas. et je veux lancer des job au démarrage. c'est mon but
Merci pour l'aide