Bonjour,

J'aimerais inclure l'envoi d'un message JMS dans une transaction globale (JBoss 4.2.2). Mon code est le suivant:
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) {}
   }
}
Avec le code précédent, le message est envoyé malgré le rollback sur UserTransaction!
Si j'essaye de rollbacker la session, j'ai une exception.

Merci d'avance