La sémantique de transaction et la plénitude d'état sont considérées comme des détails d'implémentation dans EJB3. Une implémentation peut décider d'utiliser des transactions gérées par le bean ou par un conteneur. Il peut décider du type de transaction gérée par conteneur. Il peut décider si l'état est plein ou sans état.EJB3: Pourquoi la sémantique des transactions et l'état sont-ils considérés comme des détails de mise en œuvre?
Cependant, logiquement, ce sont des détails d'interface importants. Exemples: (a) Un bean utilisant des transactions gérées par bean ne peut pas appeler un bean en utilisant des transactions gérées par conteneur. (b) Un bean sans état ne peut pas appeler un bean complet. Lorsqu'elle est présentée avec une interface EJB3, vous n'avez aucune idée du type de sémantique de transaction dont elle a besoin. De même, vous n'avez aucune idée si c'est état-complet ou apatride. Vous avez besoin de détails d'implémentation supplémentaires. Exemple: documentation.
Lors de l'exécution, différents types de beans et de chaînes d'appel peuvent être instanciés dynamiquement. Donc, un état invalide pourrait survenir. Maintenant - le conteneur peut piéger ces situations; mais pourquoi attendre jusqu'à l'exécution?
Pourquoi les sémantiques de transaction et les exigences de plénitude d'état ne font-elles pas partie de l'interface?