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