Enterprise Java Beans (EJBs) have come a long way in since J2EE 1.4. Beginning with Java EE 5, building transactional, secure, message-oriented, and persistence-aware business components has become significantly simpler. EJBs have become annotated Java objects, where annotations enhance the features of the POJO thanks to integrated JSRs like EJB 3.1, Bean Validation, Interceptors, Contexts and Dependency Injection, Expression Language, JAX-RS Java Persistence Architecture, and more. Let's not forget convention over configuration!
Thanks to some "house cleaning", Container Managed Persistence (CMP) and Bean Managed Persistence (BMP) have been deprecated. While still supported in Java EE 6, vendors have the option of not supporting BMP/CMP in the future Java EE 7 release. If your applications use BMP/CMP, it is time to investigate the much simpler Java EE 6 programming model! Along these lines, here are some resources to help you out.
Cheng Fang has a post on remote EJB invocation using GlassFish, where one EJB can invoke another EJB across JVMs. This is a recommended read if you are building distributed applications or integrating multiple business systems.
Learning about EJBs is as easy as picking up the Java EE 6 Tutorial, the EJB 3.1 Cookbook, or Enterprise JavaBeans 3.1. More generically, check out Adam Bien's books on Java EE, which cover EJBs as well.