Я занимаюсь проектированием системы сборки и структуры каталогов для большой программной системы, разработанной с помощью Java EE 5. Система сборки будет реализована с использованием ant.
У нас есть несколько разных сервисов, которые сгруппированы по тематике. Каждая служба предлагает либо веб-службу, либо EJB-компоненты. Каждая служба работает на выделенном кластере серверов приложений. Таким образом, у нас есть несколько кластеров, и некоторые из этих кластеров можно логически сгруппировать по темам.
Я читал общие определения и примеры, но меня все еще смущает терминология Java EE:
- Что такое приложение Java EE? Итак, каково содержимое файла EAR?
- Что такое проект Java EE? (этот термин используется в Netbeans, а также в соглашениях о проектах руководств по проектам Java Blueprints для корпоративных приложений)
Должен ли я помещать все файлы EJB и WAR-module-package в один EAR, чтобы этот единственный EAR содержал нашу полную систему?
Или я могу поместить каждую группу сервисов в один EAR, несмотря на то, что эти сервисы сгруппированы только логически, но не технически?
Или я могу собрать отдельный EAR для каждой службы, т.е. чаще всего содержащий только один файл jar EJB, а иногда и EJB и файл WAR?
Или мне отказаться от концепции приложений и просто создать файлы EJB и WAR, чтобы у меня был ровно один файл развертывания для каждого кластера серверов приложений?
Думаю, мой главный вопрос: каковы преимущества упаковки файлов EAR?
Насколько я понимаю на данный момент, нужны только файлы EAR-EJB и WAR, а также концепция вложенного подпроекта в ant-build-system и структура каталогов нашего источника?
Изменить: Большое спасибо за ответы! Мне кажется, что запакованное в ухо приложение - это довольно атомарная подсистема. Итак, я предполагаю, что у меня будет вложенная структура подпроекта (только логическая, видимая только для системы сборки и в структуре каталогов исходного кода) и довольно большое количество EAR, каждый из которых содержит в основном только один ejb-jar и / или военный модуль и реализация единой службы (которая развернута в одном кластере серверов приложений).