What is a stateless session bean?
Created May 4, 2012
The stateless session bean is an EJB component that implements the javax.ejb.SessionBean
interface and is deployed with the declarative attribute "stateless". Stateless session beans are called "stateless" because they do not maintain conversational state specific to a client session. In other words, the instance fields in a stateless session bean do not maintain data relative to a client session. This makes stateless session beans very lightweight and fast, but also limits their behavior.
Stateless session beans are usually developed as a set of related and simple services. Think of a session bean as a functional API where each business method represents an isolated independent service. An example is a CreditService bean that provides methods for making charges against different types of credit cards (MC, Visa, Discovery, etc).
public class CreditService implements javax.ejb.SessionBean {
public Charge charge (String accountToCredit, CreditCard card, double amount)
throws ValidationException, RemoteException{
// attempt to obtain Merchant bean representing the retailer making the charge.
try{
MerchantHome mrchntHome = ... get VendorHome reference
Merchant merchant = mrchntHome.findByPrimaryKey(vendorToCredit);
}catch(ObjectNotFoundException onfe){
throw new ValidationException("Invalid merchant account number");
}
// attempt to create a Charge bean based on the vendor, amount, and credit card info
try{
ChargeHome chgHome = ... get ChargeHome reference
Charge charge = chgHome.create(merchant, card, amount);
return charge;
}catch(CreateException ce){
throw new ValidationException(ce.getMessage());
}
}
...
}
CreditService
bean method charge( )
is completely independent of the bean state or any other methods. The charge( )
method is a stateless service and the CreditService
bean is a stateless bean. The charge( )
method uses two other bean types to process the charge. Its normal for stateless beans to use other beans but they can also access the database directly or even other resources like proprietary connections. Below is a list the beans used in this example.
Bean Name | Bean Type |
CreditService | Stateless Session |
Merchant | Entity |
Charge | Entity |
An example of how the CreditService bean could be used by a client application or bean is shown in the FAQ entry Java:API:EJB:SessionBean:Stateful:What is a stateful session bean?