Par rapport aux spécifications EJB antérieures, la spécification Java™ EE simplifie la création d'applications EJB 3.1.
Les fonctions suivantes ont été ajoutées dans EJB 3.1 (JSR 318) :
- Beans singleton (@Singleton)
- Avant EJB 3.1, il n'était pas possible de partager des données facilement dans toute l'application ; le singleton EJB 3.1 est un singleton qui s'applique à l'intégralité de l'application.
- L'accès concurrent peut être géré par le conteneur ou par le développeur de bean
Java EE rationalise le développement d'EJB de plusieurs manières :
- Réduction du nombre de classes et d'interfaces requis
- Les interfaces "home" et "objet" ne sont plus indispensables. Seule demeure requise l'interface métier.
- Il n'est plus nécessaire d'implémenter javax.ejb.SessionBean.
- Il n'est plus nécessaire de déclarer les exceptions contrôlées.
- Descripteurs de déploiement facultatifs
- Les annotations permettent de définir les composants et d'injecter les dépendances.
- Recherches faciles
- La nouvelle méthode d'interface EJBContext() remplace les appels JNDI.
- Persistance légère pour le mappage objet-relationnel
- Les entités sont des objets POJO qui donnent une vue orientée objet des données stockées dans la base de données relationnelle
- Nouvelle classe d'intercepteurs (nouveauté de Java EE 5)
- Les intercepteurs sont des objets qui peuvent intercepter un appel à une méthode métier (pour gérer la sécurité, par exemple)
- Finalité et action similaires à celles du filtre de servlet ou du gestionnaire de service Web.
- Offrent une forme limitée de programmation orientée aspect.