Well Apache is a web server .. serving files through the HTTP protocol.
Tomcat is a web container and helps you make dynamic web pages with
Jsp and
servlets, just like techs php, asp, cold fusion, perl cgi and so on.
Usually Apche sits before Apache to reply to users requests; if the request involves only static data like simple html pages or images, then it can handle it itslef, if the request involves generating dynamic stuff, then it forwards the request to Tomcat to deal with it..
Tomcat supports only servlets and JSPs.. For EJBs you will need an EJB container (usually called an application container) like
JBoss JOnas or comercial ones weblogic and websphere