2010-08-25 13 views
2

minuteries sont créés en utilisant le EJB3 TimerService.createTimer() et sont appliquées ensuite par quelle méthode de rappel qui est annoté par l'annotation @Timeout, à savoir:Les temporisateurs EJB3 héritent-ils des haricots qui les ont créés?

@Resource 
private TimerService timerService; 

public void createHampster() { 
    Hampster hampster = new Hampster("Fluffy III"); 
    timerService.createTimer(3000, 3000, hampster); 
} 

(...)

@Timeout 
public void feedHampster(Timer timer) { 
    Hampster hampster = (Hampster) timer.getInfo() 
    //(...) 
} 

Alors, mon question, est-ce que ces deux blocs de code doivent être dans le même haricot? Les temporisateurs héritent-ils du haricot dans lequel ils ont été créés ou sont-ils globaux? Mon propre test suggère mais ancien, et je n'ai rien trouvé de précis dans la documentation.

Répondre

2

Ils sont liés au haricot qui les crée. EJB 3 sections de spécification 18.2 dit:

La classe de haricot d'un haricot d'entreprise qui utilise le service de minuterie doit fournir une méthode de rappel de délai d'attente.

et

Lorsque le temps spécifié à minuterie création écoulé, le conteneur appelle la méthode de rappel de temporisation de la fève.

+0

Bon. Je ne connaissais pas la spécification EJB3. – mikek

+1

Vous pouvez les obtenir ici si le contrat de licence ne vous pose aucun problème: http://java.sun.com/products/ejb/docs.html –