J'essaie de connecter une application externe à un conteneur JBoss AS. L'application externe est une application Java qui est actuellement notifiée des modifications apportées aux entités de base de données via une rubrique JMS. J'ai ajouté une classe EntityLifecycleListener à toutes mes entités qui publient une copie sérialisée (et dépliée) de l'entité sur la rubrique JMS.avoir une application java externe en informés des modifications apportées Entity EJB dans JBoss AS
Le problème est que cette mise en œuvre ne tient pas compte des limites de transaction du conteneur JBoss. Par exemple, l'événement @PostUpdate peut être déclenché, générant le message JMS pour cette entité, mais la transaction peut être annulée, ce qui entraîne la notification de l'application externe d'une modification non valide et l'annulation de la synchronisation.
J'ai besoin de ma demande externe à n'avisé de commits avec succès à la base de données, mais je dois être en mesure de publier l'ensemble de Java POJO à l'application externe. Existe-t-il un moyen officiel de le faire?
C'est bizarre, je m'attends à des interactions avec JMS partie d'une transaction globale. Je vais creuser c'est un peu plus loin ... –
Je suis sûr que je suis en utilisant les callbacks du cycle de vie de l'entité de manière incorrecte dans ce que je les utilise pour conduire des données en dehors des limites transaction/conteneurs qui je crois est un no- non selon l'APP. Je me demande si je devrais plutôt enregistrer un écouteur avec le bean EJB Entity Cache déployé par JBoss et utiliser le callback @TransactionCompleted pour publier l'objet après avoir vérifié que la transaction a réussi. –