Chapter 3. Session beans 3.1. Session Beans Session beans are enterprise beans that encapsulate a set of related business processes or tasks and are injected into the classes that request them. There are three types of session bean: stateless, stateful, and singleton. 3.2. Stateless Session Beans Stateless session beans are the simplest yet most widely used type of session bean. They provide business methods to client applications but do not maintain any state between method calls. Each method is a complete task that does not rely on any shared state within that session bean. Because there is no state, the application server is not required to ensure that each method call is performed on the same instance. This makes stateless session beans very efficient and scalable. 3.3. Stateful Session Beans Stateful session beans are enterprise beans that provide business methods to client applications and maintain conversational state with the client. They should be used for tasks that must be done in several steps, or method calls, each of which relies on the state of the step being maintained. The application server ensures that each client receives the same instance of a stateful session bean for each method call. 3.4. Singleton Session Beans Singleton session beans are session beans that are instantiated once per application and every client request for a singleton bean goes to the same instance. Singleton beans are an implementation of the Singleton Design Pattern as described in the book Design Patterns: Elements of Reusable Object-Oriented Software by Erich Gamma, Richard Helm, Ralph Johnson and John Vlissides; published by Addison-Wesley in 1994. Singleton beans provide the smallest memory footprint of all the session bean types but must be designed as thread-safe. Jakarta Enterprise Beans 3.2 provides container-managed concurrency (CMC) to allow developers to implement thread safe singleton beans easily. However singleton beans can also be written using traditional multi-threaded code (bean-managed concurrency or BMC) if CMC does not provide enough flexibility. 3.5. Add Session Beans to a Project in Red Hat CodeReady Studio Red Hat CodeReady Studio has several wizards that can be used to quickly create enterprise bean classes. The following procedure shows how to use the Red Hat CodeReady Studio wizards to add a session bean to a project. Prerequisites You have a Jakarta Enterprise Beans or Dynamic Web Project in Red Hat CodeReady Studio to which you want to add one or more session beans. Add Session Beans to a Project in Red Hat CodeReady Studio Open the project in Red Hat CodeReady Studio. Open the Create EJB 3.x Session Bean wizard. To open the Create EJB 3.x Session Bean wizard , navigate to the File menu, select New and then select Session Bean (EJB 3.x) . Figure 3.1. Create EJB 3.x Session Bean wizard Specify following details: Project: Verify the correct project is selected. Source folder: This is the folder that the Java source files will be created in. This should not usually need to be changed. Package: Specify the package that the class belongs to. Class name: Specify the name of the class that will be the session bean. Superclass: The session bean class can inherit from a superclass. Specify that here if your session has a superclass. State type: Specify the state type of the session bean: stateless, stateful or singleton. Business interfaces: By default the No-interface box is checked so no interfaces will be created. Check the boxes for the interfaces you wish to define and adjust the names if necessary. Remember that enterprise beans in a web archive (WAR) only support Jakarta Enterprise Beans 3.2 Lite and this does not include remote business interfaces. Click . You can enter in additional information here to further customize the session bean. It is not required to change any of the information here. Items that you can change are: Bean name Mapped name Transaction type (container managed or bean managed) Additional interfaces can be supplied that the bean must implement You can also specify EJB 2.x Home and Component interfaces if required Click Finish and the new session bean will be created and added to the project. The files for any new business interfaces will also be created if they were specified. Figure 3.2. New Session Bean in Red Hat CodeReady Studio

Commands: