Large enterprise software projects involve multiple stakeholders with different responsibilities. Without clear role separation, code, deployment, and operations become chaotic—developers might hardcode server paths, or deployers might not know which security settings to apply.
EJB formalizes the software development lifecycle by dividing it into distinct roles, each with clear responsibilities. This separation of concerns ensures that code is portable, reusable, and professionally managed.
The EJB specification defines these roles:
| Role | Responsibility |
|---|---|
| Bean Provider | Writes the Java code (Bean Class, Interfaces) and business logic |
| Application Assembler | Combines multiple beans into a complete application |
| EJB Deployer | Installs and configures the application on the server |
| System Administrator | Monitors the live system, ensures server health |
| Container/Server Provider | Builds the application server (e.g., Oracle, IBM, JBoss) |
- Bean Provider only writes business logic—never server-specific code
- Application Assembler doesn’t need to know implementation details of each bean
- Deployer uses vendor-specific tools but deploys standard EJB-JAR files
- Portability: Code written by Bean Provider runs on any EJB container
- Built from: Deployment Descriptor (used by Deployer)
- Builds into: EJB Container (provided by Container Provider)
- Related: Session Bean, Entity Bean (created by Bean Provider)
- Contrasts with: Monolithic development (no role separation)
- In small teams, one person may wear multiple roles (Bean Provider + Assembler + Deployer)
- Container Provider role is only for big vendors (Oracle, IBM, Red Hat)—most developers are Bean Providers
- Miscommunication between Assembler and Deployer causes deployment failures