Я мог бы сказать, что в нашем довольно крупном проекте (~ 500K LOC) мы избавились от JBoss в пользу Spring / Tomcat для повышения производительности.
Одной из ключевых функций контейнера приложения J2EE (и JBoss, как реализации) является возможность прозрачных распределенных транзакций между различными видами транзакционных ресурсов. Это отличная идея, и она значительно упрощает координацию, скажем, обмена сообщениями JMS и работы с базами данных. Но когда дело доходит до необходимости высокого повсюду, это становится проблемой. К сожалению, распределенные транзакции отличаются низкой скоростью.
Это не простая задача для перехода с JBoss на Spring, однако это возможно, и Spring / Tomcat, за редкими исключениями, можно рассматривать как полностью функциональную замену JBoss.