You would need EJBs in a Java EE application when you need services such as transactions, security, pooling, monitoring, asynchronous processing, scheduling and the like. The fist and second chapters of EJB 3 in Action answers this question in detail.