Во-первых, «J2EE» — устаревшая аббревиатура, теперь она называется просто «Java Enterprise Edition» или Java EE.
В отличие от контейнера сервлета (например, Tomcat), «полные» серверы приложений Java EE также содержат контейнер EJB. EJB — это Enterprise Java Beans, и вы можете много о них прочитать, например, здесь (глава IV). Компоненты EJB теперь доступны в версии 3.2 (Java EE 7 и Java EE 8), предыдущие версии — 3.1 (Java EE 6) и 3.0 (Java EE 5); однако самая большая разница между v2 и v3.
EJB предназначены для сохранения бизнес-логики вашего приложения. Например, сессионный компонент без сохранения состояния может что-то вычислять, представлять веб-службу или что-то еще, что нужно вашему приложению. Компоненты, управляемые сообщениями, могут прослушивать очереди сообщений, поэтому они полезны, если вам нужна асинхронная связь. Компоненты Singleton гарантируют один экземпляр на компонент и т. д.
Что касается типа файла, EJB упакован в файл .jar, веб-приложение — в файл .war, и если вы хотите смешать их в одном приложении, это будет файл .ear («корпоративный архив»).
Помимо EJB, «полный» сервер приложений также заботится о транзакциях, безопасности, ресурсах JDBC... Я настоятельно рекомендую использовать его вместо контейнера сервлетов, но преимущества связаны со сложностью, поэтому вам придется потратить разумное количество времени. научиться справляться, например, с Websphere (Payara и WildFly намного проще и являются моими любимыми). JBoss и Weblogic также довольно популярны, и если вы знакомы с Tomcat, загляните на TomEE.
19.06.2013