EJB 3.1, final release (2009-12-10) : The purpose of the Enterprise JavaBeans 3.1 specification is to further simplify the EJB architecture by reducing its complexity from the developer’s point of view.

Note :- EJB 3.0 made it much easier to write EJBs, using ‘annotations’ rather than the complex ‘deployment descriptors’ used in version 2.x. The use of home and remote interfaces and the ejb-jar.xml file were also no longer required in this release, having been replaced with a business interface and a bean that implements the interface.

Note:- Legacy (deprecated) beans:Previous versions of EJB also used a type of bean known as an Entity Bean. These were distributed objects having persistent state. Beans in which their container managed the persistent state were said to be using Container-Managed Persistence (CMP), whereas beans that managed their own state were said to be using Bean-Managed Persistence (BMP). Entity Beans were replaced by the Java Persistence API in EJB 3.0, though even in EJB 3.1, CMP 2.x style Entity beans are still available for backward compatibility.

EJB clients

utilizes the Java Naming and Directory Interface (JNDI) to look up for the references to home interfaces

use home and remote EJB interfaces to utilize all EJB-based functionality

The PortableRemoteObject.narrow( ) method was first introduced in EJB 1.1 and continues to be used on remote clients in EJB 3.0. It is needed to support the requirements of RMI over IIOP(Internet Inter-Orb Protocol which delivers Common Object Request Broker Architecture (CORBA) distributed computing capabilities to the Java 2 platform).

Because CORBA supports many different languages, casting is not native to CORBA (some languages don’t have casting). Therefore, to get a remote reference to myLoarRemote, we must explicitly narrow the object returned from lookup( ).