Sto leggendo il libro dell'appress dedicato alle specifiche degli EJB 3.2.
Quello che non mi è chiaro è in cosa differiscono questi EJB rispetto ad un normale progetto realizzato con JSP + normali servlets.

Nel libro viene fatto un esempio di stateful session bean
Codice PHP:
package com.apress.ejb.chapter02;
import java.util.ArrayList;
import javax.ejb.Stateful;
@
Stateful(name="ShoppingCart")
public class 
ShoppingCartBean implements ShoppingCartShoppingCartLocal {  
public 
ShoppingCartBean() {
}
public 
ArrayList cartItems;
public 
void addWineItem(String wine) { 
cartItems.add(wine);
}
public 
void removeWineItem(String wine) { 
cartItems.remove(wine);
}
public 
void setCartItems(ArrayList cartItems) {
this.cartItems cartItems;
}
public 
ArrayList getCartItems() { 
return 
cartItems;
}

Essendo di tipo stateful si crea una persistenza dei dati tra un utilizzo e l'altro del bean, comportamento che fino ad oggi sono sempre riuscito a ricreare con HttpSession.
Quindi dov'è la principale differenza tra una normale servlet ed un componente definibile Session bean?
Il codice sopra indicato ricrea il comportamento dell'
HttpSession in maniera automatizzata senza necessità di scrivere tutto il codice a mano?