Bonjour,
J'aimerais inclure l'envoi d'un message JMS dans une transaction globale (JBoss 4.2.2). Mon code est le suivant:
Avec le code précédent, le message est envoyé malgré le rollback sur UserTransaction!
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 final UserTransaction userTxn = (UserTransaction) initialContext.lookup("UserTransaction"); userTxn.begin(); sendJmsMessageWithXA(initialContext); userTxn.rollback(); private void sendJmsMessageWithXA(InitialContext initialContext) throws Exception { final Queue destination = (Queue) initialContext.lookup("queue/A"); final XAQueueConnectionFactory conFactory = (XAQueueConnectionFactory) initialContext.lookup("XAConnectionFactory"); final XAConnection con = conFactory.createXAConnection(); try { final XASession xaSession = con.createXASession(); try { final TextMessage msg = xaSession.createTextMessage("Test"); final MessageProducer producer = xaSession .createProducer(destination); try { producer.send(msg); } finally { try { producer.close(); } catch (Exception ignore) {} } } finally { try { xaSession.close(); } catch (Exception ignore) {} } } finally { try { con.close(); } catch (Exception ignore) {} } }
Si j'essaye de rollbacker la session, j'ai une exception.
Merci d'avance
Partager