Sur JBoss 5.1.0, j'ai une source de données (PostgreSQL 8.3.11) configurée à l'aide de *-ds.xml (DS standard de jboss). Il utilise XADataSource ( PGXADataSource ). J'ai également un courtier ActiveMQ (pour l'instant, il fonctionne en tant que in-VM, sous JBoss, mais il sera plus tard sur un serveur séparé).
Ce que je veux faire, c'est que la Connection Factory et la Datasource d'ActiveMQ participent aux transactions XA. Par exemple, je veux mettre à jour un enregistrement de la base de données et envoyer un message JMS comme un UOW. Vous voyez l'idée.
J'ai configuré PGXADataSource dans mon-pg-ds.xml et cela fonctionne (je peux tracer l'exécution jusqu'à Méthode de démarrage de PGXAConnection ). J'ai essayé de configurer ActiveMQXAConnectionFactory directement dans Spring (j'utilise Spring 3.0.2.RELEASE), mais cela ne fonctionne pas, car dans ce cas, le gestionnaire de transactions de Spring (j'utilise une annotation pour permettre à Spring de configurer l'application JtaTransactionManager qui délègue simplement tout le travail au gestionnaire de transactions de Jboss) ne fait pas appel à XAResource pour les tâches suivantes Connexion ActiveMQXAConnection . Chaque fois que j'essaie d'envoyer un message, j'obtiens une exception JMSException disant "La XAResource de la session n'a pas été enrôlée dans une transaction distribuée. ActiveMQXASession .
Comme cela n'a pas fonctionné, je suis passé à la configuration JCA de la ConnectionFactory d'ActiveMQ (basée sur este ) et cela fonctionne pour les ConnectionFactory mais je ne comprends pas comment je peux le configurer pour utiliser XAConnectionFactory. Il semble que Adaptateur de ressources ne dispose tout simplement pas des implémentations ManagedConnectionFactory, ManagedConnection, etc. appropriées pour l'usine de connexion XA.
Est-ce que je rate quelque chose ou est-ce que je n'ai pas d'autre choix que d'écrire des wrappers XA pour l'adaptateur de ressources ?