J'utilise session bean dans mon application et la transaction est contrôlée à la couche EJB seulement. Le problème auquel je fais face est avec un certain engagement. J'utilise la même connexion qu'utilisée par EJB pour l'insérer dans une table, mais si la transaction est validée alors cet insert n'est pas validé dans la base de données .. quelqu'un peut m'aider avec le problème ..est-ce que ejb s'engage sur la connexion?
Répondre
Je suis pas un expert EJB, je travaille généralement avec des objets Java anciens, mais ...
Votre problème est probablement dû au fait que les EJB ne font pas la gestion des transactions au niveau de la connexion. Ils utilisent le service de transactions Java pour créer des transactions pouvant utiliser plusieurs connexions. Donc, pour que votre insertion fasse partie de la transaction de l'EJB, vous devez obtenir cette transaction du serveur de transaction et faire en sorte que votre insertion fasse partie de cette transaction. Je crois que la façon dont vous faites cela dépend exactement de quel type d'environnement EJB que vous avez (EJB2 ou 3 et ainsi de suite)
Mais si votre dans un environnement EJB et que vous souhaitez insérer des choses dans les mêmes opérations en tant que EJB ne Cela n'a-t-il pas de sens de créer un EJB pour la table que vous voulez insérer et de laisser le serveur d'applications le découvrir?
Général, simplifié, la réponse à votre question est oui, Connection.commit() est appelée lorsque EJB est validé. Ce que fait réellement EJB dépend de la façon dont la source de données est définie (transactionnelle ou non) et si l'optimisation de la dernière ressource est autorisée.
J'utilise la même connexion utilisé par EJB
Comment savez-vous? Certains wrappers de connexion (par exemple Weblogic one, si je me souviens bien) n'ont aucun moyen de comparer deux connexions pour l'égalité. Pour ce faire, il faut utiliser une API fournisseur. Donc, même si vous pensez que deux connexions sont identiques, ce n'est pas forcément le cas.
Comment avez-vous obtenu cette connexion? D'où? En fonction de la version EJB, vous devez uniquement obtenir une connexion à partir de la source de données transactionnelle (EJB2) ou utiliser le contexte de persistance et JPA (EJB3). Un code simplifié de ce que vous faites aiderait grandement à pointer votre erreur.
- 1. EJB sur le client
- 2. Ejb réfrène un autre ejb
- 3. Application EJB 3.1 déployée en tant que fichier WAR uniquement: qu'en est-il de ejb-jar.xml?
- 4. weblogic 10.3: EJB JAR est déployé en tant que "Bibliothèque" et non "EJB"
- 5. Recherche JNDI EJB sur différents serveurs WebSphere
- 6. question sur EJB et injection de ressources
- 7. Comment déployer EJB sur le serveur?
- 8. POJO vs EJB vs EJB 3
- 9. ejb avec la tâche ANT
- 10. Comment précharger des instances EJB sur JBOss
- 11. Comment déployer une application EJB sur Tomcat
- 12. Transmettre la valeur de la classe d'action Java à ejb?
- 13. Utilisation simultanée d'un EJB exposé en tant que service RMI
- 14. Invoquer EJB sur 1.6 depuis le client sur 1.5
- 15. EJB en tant que service Web - Session Timeout
- 16. Accéder à un EJB déployé sur un serveur de communauté websphere à l'aide d'Open EJB?
- 17. La manière la plus simple de convertir le projet EJB 2.0 en EJB 3.0
- 18. Révéler méthode EJB en tant que service REST
- 19. EJB remote application-client
- 20. Comment accéder à la 'Session' d'un EJB?
- 21. Ressources pour apprendre EJB
- 22. EJB 3.0 et SQL
- 23. Ejb-QL DISTINCT ON
- 24. Enterprise OSGi vs. EJB
- 25. Stratégies de test EJB?
- 26. EJB Interceptor dans Weblogic
- 27. Contrôleur EJB vs JPA?
- 28. L'héritage EJB est-il possible via différents modules EJB?
- 29. EJB 2.1 Entités beans vs. EJB 3.0 Entités beans
- 30. Erreur client EJB
Votre problème n'est pas clair. Utilisez-vous uniquement des beans session? Utilisez-vous BMT ou CMT? Comment obtenez-vous la connexion dont vous parlez? S'il vous plaît ajouter quelques détails, montrez-nous du code. –