background image

What Is a Session Bean

<< When to Use Enterprise Beans | When to Use Session Beans >>
<< When to Use Enterprise Beans | When to Use Session Beans >>

What Is a Session Bean

What Is a Session Bean?
A session bean represents a single client inside the Application Server. To access an application
that is deployed on the server, the client invokes the session bean's methods. The session bean
performs work for its client, shielding the client from complexity by executing business tasks
inside the server.
As its name suggests, a session bean is similar to an interactive session. A session bean is not
shared; it can have only one client, in the same way that an interactive session can have only one
user. Like an interactive session, a session bean is not persistent. (That is, its data is not saved to
a database.) When the client terminates, its session bean appears to terminate and is no longer
associated with the client.
For code samples, see
Chapter 22, "Session Bean Examples."
State Management Modes
There are two types of session beans: stateful and stateless.
Stateful Session Beans
The state of an object consists of the values of its instance variables. In a stateful session bean,
the instance variables represent the state of a unique client-bean session. Because the client
interacts ("talks") with its bean, this state is often called the conversational state.
The state is retained for the duration of the client-bean session. If the client removes the bean or
terminates, the session ends and the state disappears. This transient nature of the state is not a
problem, however, because when the conversation between the client and the bean ends there is
no need to retain the state.
Stateless Session Beans
A stateless session bean does not maintain a conversational state with the client. When a client
invokes the methods of a stateless bean, the bean's instance variables may contain a state specific
to that client, but only for the duration of the invocation. When the method is finished, the
client-specific state should not be retained. Clients may, however, change the state of instance
variables in pooled stateless beans, and this state is held over to the next invocation of the
pooled stateless bean. Except during method invocation, all instances of a stateless bean are
equivalent, allowing the EJB container to assign an instance to any client. That is, the state of a
stateless session bean should apply accross all clients.
Because stateless session beans can support multiple clients, they can offer better scalability for
applications that require large numbers of clients. Typically, an application requires fewer
stateless session beans than stateful session beans to support the same number of clients.
What Is a Session Bean?
Chapter 20 · Enterprise Beans
633