Salve a tutti,
vado subito al sodo.

Ho un'applicazione che si compone di un centinaio di batch (fatti con Spring Batch) che accedono a un database DB2 in lettura e scrittura. Devo aggiungere un nuovo batch che si deve appoggiare anche a una coda MQ e qui scende in campo XA per la gestione delle transazioni distribuite.

Problema: applicare XA a TUTTA l'applicazione potrebbe non essere una bella idea in quanto c'è il rischio di rallentare 99 batch per farne funzionare uno solo. Si è pensato perciò di lasciare i batch esistenti su un DataSource non-XA mentre solo il job nuovo utilizzerà il DataSource XA.

Quindi ora ci sono due DataSource (ottenuti via jndi): uno XA e uno non-XA ma il database DB2 sottostante è sempre lo stesso. Questa cosa potrebbe dare problemi? Mi dicono che in ambiente di test di tanto in tanto si verificano dei deadlock e la causa parrebbe essere questo utilizzo misto di XA/non-XA. Purtroppo XA è un argomento che conosco molto (molto) poco...

Avete qualche suggerimento? Quello che sto cercando fare ha senso o è una stupidata? (Sospetto quest'ultima...)

Grazie a chiunque sia in grado di darmi qualche dritta!
Ciao!