Решение об использовании Tomcat (который, на мой взгляд, является более легким контейнером) по сравнению с тяжелым (JBoss AS, Glassfish, ...) зависит главным образом от того, что вам нужно сделать.
Все контейнеры разделяют некоторые базовые вещи (например, пул баз данных, jmx, ...), но в определенный момент (например, вам нужно мощное кластерное решение со всем автоматическим переключением при сбое), чем более сложные контейнеры предоставляют больше готовых решений для таких требований.Конечно, вы могли бы также создать такие решения с помощью облегченного решения, но, вероятно, это проще с контейнером J2EE.
С другой стороны, POJO проще обрабатывать, чем EJB, и до тех пор, пока вы этого не сделаетеесть какие-то большие и тяжелые требования, которые я бы придерживался Spring.Использование лишь небольшого процента контейнера J2EE и создание приложения в нем делает его не очень удобным для использования.
Обработка транзакций в Spring и в J2EE в основном одинакова (оба способа могут быть выполнены с помощью, например,декларативный подход (аннотации)).
Если вы никогда не запускаете свое приложение в контейнере, я бы начал с более простого (Tomcat), а затем приблизился бы к более крупным, если это необходимо, поскольку это, вероятно, облегчает вашу жизнь.И до тех пор, пока у вас не было особых требований, которые вы не смогли бы выполнить, я не вижу смысла немедленно начинать с JBoss или Glassfish и переписывать ваше приложение, чтобы оно соответствовало J2EE.