На самом деле, я думал, что B был "стандартным" способом: -)
Я выбираю Б почти все время. Для наших клиентов проще - у многих из них нет навыков администрирования серверов приложений Java - они просто помещают WAR в место, куда я им говорю, и все работает.
Он также хорошо работает с нашей сборкой и развертыванием - WAR создается с использованием maven, поэтому все необходимые зависимости включены, а также могут быть развернуты на наших серверах приложений QA с помощью плагина Cargo.
Он также избегает «WAR-ад», когда у вас есть несколько веб-приложений, требующих гибернации или других зависимостей, но разных версий.
Я бы выбрал A только тогда, когда я полностью контролирую сервер приложений, и накладные расходы на дублирование общих библиотек для каждого веб-приложения становятся чрезмерно большими или я могу гарантировать, что все приложения тестируются с одной и той же версией зависимости. Затем я знаю, что зависимости можно безопасно переместить в общую область сервера приложений.