Bonjour à tous,

J'ai besoin d'un petit coup de main chers confrères!

Voilà dans mon projet j'ai un Session Bean @Stateless dont une méthode @Scheduled s'exécute tout les lundi à minuit.
Ce Bean s'appuie sur un autre Bean style service permettant la création d'objet en base.
La méthode est assez longue à se terminer et fait beaucoup d'appels au service pour créer des objets avec JPA.

Voici mes objets:

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
42
43
44
45
46
47
48
49
 
 
@Stateless
public class TachePlanifiee implements TachePlanifieeLocal {
 
@Inject
private transient Logger logger;
 
@EJB
AppelService serviceAppel;
 
 
@Schedule(second = "0", minute = "0", hour = "0", dayOfWeek = "Mon", dayOfMonth = "*", month = "*", year = "*", info = "MyTimer", persistent = false)
	private void scheduledTimeout() throws DAOException {
 
        //... code métier boucles etc.
        serviceAppel.createAppel(a, idClient);
        // ... code métier
 
}
 
 
}
 
 
@Stateless
public class AppelServiceImpl implements AppelService {
 
 
	@Inject
	ProspectionDAO daoP;
 
	@Inject 
	AppelDAO daoA;
 
	@Inject 
	@Mapper(businessObject=BusinessObject.APPEL)
	IMapper mapper;
 
 
	@Override
	public Appel createAppel(Appel a, Long prospectionId) throws DAOException {
		Prospection prospect = daoP.find(prospectionId);
		a.setProspection(prospect);
		a.setCommercialEnCharge(prospect.getCommercial().getCommercialEnCharge());
		prospect.getAllAppels().add(a);
		return daoA.create(a);
	}
}
Le problème est que la méthode planifiée est trop longue, la transaction contenant les persist des objets se met en timeout et du coup, aucune requête SQL ne s’exécute.
Ce que je voudrais, c'est désactiver la transaction de la méthode planifiée et utiliser uniquement les transactions des méthodes du service.
J'ai lu que les méthodes planifiées sont obligatoirement transactionnelles par contre... Y aurait-il peut être une autre façon de faire avec CDI?

Merci beaucoup!