J'utilise un EJB avec une annotation @scheduled pour boucler toutes mes entités de contexte toutes les 10 secondes. Toutes les entités Contextes ne sont pas liés les uns aux autres et devrait donc créer de nouvelles transactions pour leur méthode de mise à jour:Boucle à l'intérieur de @Schedule avec de nouvelles transactions
@Stateless
public class UpdateService {
@EJB
ContextDao contextDao;
@Schedule(second = "*/10", minute = "*", hour = "*")
public void update() {
for(ContextEntity context : contextDao.findAllContexts()) {
updateContext(context);
}
}
public void updateContext(ContextEntity context) {
// load data from db
// update some stuff
// save back to db
}
}
Maintenant, je veux avoir une seule transaction pour la méthode updateContext. Donc, si j'obtiens une erreur dans un ContextEntity, seule cette transaction devrait être annulée et non toute la boucle.
- Quels sont les attributs TransactionAttributes corrects pour update et UpdateContext?
- Dois-je utiliser un EJB différent pour la méthode updateContext?
Merci
Ceci est une description utile et utile, mais je ne l'aurais pas trouvée. J'aurais cherché * imbriqué * ou * intégré * appelant * même * EJB ou quelque chose. Peut-être pourrait-il être renommé – aschoerk