Enterprise JavaBeans (EJB) is defined as JSR 345, and the complete specification can be downloaded.
Enterprise JavaBeans are used for the development and deployment of component-based distributed applications that are scalable, transactional, and secure. An EJB typically contains the business logic that operates on the enterprise’s data. The service information, such as transaction and security attributes, may be specified in the form of metadata annotations, or separately in an XML deployment descriptor.
A bean instance is managed at runtime by a container. The bean is accessed on the client and is mediated by the container in which it is deployed. The client can also be on the server in the form of a managed bean, a CDI bean, or a servlet of some sort. In any case, the EJB container provides all the plumbing required for an enterprise application. This allows the application developer to focus on the business logic and not worry about low-level transaction and state management details, remoting, concurrency, multithreading, connection pooling, or other complex low-level APIs.
There are two types of enterprise beans:
Entity beans were marked for pruning in the EJB 3.1 version of the specification and are made optional in EJB 3.2. It is strongly recommended to use the Java Persistence API for all the persistence and object/relational mapping functionality.
A stateful session bean contains conversational ...