Если вы не знаете, что будете обслуживать много запросов в секунду или у вас слишком большая бизнес-логика с большой нагрузкой на данные и / или ЦП, то все должно быть в порядке, если вы развернете оба уровня на одном сервере приложений. Начав с развертывания на одном сервере приложений Glassfish с использованием локальных интерфейсов, вы можете пропустить много сложностей в среде выполнения.
Это, в свою очередь, позволит вам использовать простейшую форму @ EJB-инъекции на веб-уровне для доступа к фасадам сеансов на бизнес-уровне. Локальные интерфейсы работают быстрее, потому что сервер приложений может передавать ссылки, а не прокси RMI между уровнями, и это позволяет вам пропустить поиск JNDI. Вы всегда можете изменить аннотацию позже или ввести удаленные интерфейсы, если позже вы найдете другие причины для развертывания уровней на отдельных серверах.
Glassfish поддерживает кластеризацию, поэтому вам никогда не придется явно разделять два уровня - все зависит от фактических моделей использования, поэтому мониторинг производительности является ключевым.
Развертывание веб-уровня в качестве WAR и бизнес-логики в качестве EJB-файла является правильным решением. В зависимости от размера и логической структуры вашего приложения вы можете разбить его на несколько модулей.
Maven заботится о создании архивов. Убедитесь, что вы определили подпроект для каждого архива войны и jar, а также подпроект для сборки EAR-файла. Последний проект будет загружать файлы war и jar, созданные другими подпроектами. Объединяя все проекты вместе с master maven project и вуаля, вы можете гибко создавать каждый компонент отдельно, создавать весь объект или любую промежуточную комбинацию.