2013-02-23 3 views
0

В настоящее время мы работаем над проектом для колледжа, который мы хотели бы реализовать в качестве логического модуля и модуля пользовательского интерфейса. У нас мало опыта развертывания веб-приложений, однако мы пришли к следующей альтернативе:Развертывание приложений Java (Tomcat/Glassfish)

  1. развернуть его как проект одного WAR (что бы решить эту проблему, мы имеем о связи интерфейса с бэкэндом нашего приложения).
  2. Разверните два проекта WAR на одном сервере, используя веб-службы для обмена данными между проектами. (У нас есть прототип, использующий этот подход, развернутый на сервере Tomcat)
  3. Разверните проект WAR и проект EJB.
  4. Разверните проект EAR, который будет содержать ссылки на проекты WAR и EJB. (У нас есть прототип, использующий этот подход, развернутый на сервере Glassfish)

Мы хотели бы знать, является ли какой-либо из этих альтернатив неправильным или если какой-либо из вариантов лучше другого. В частности, почему было бы полезно (или нет) развернуть проект как модуль EAR?

Проект прямо сейчас начинается, поэтому мы будем обрабатывать пару сотен пользователей прямо сейчас. Однако, если проект будет успешным, нам нужно будет иметь дело с несколькими миллионами пользователей.

ответ

1

Ни одна из альтернатив неверна, хотя Tomcat является контейнером сервлетов, если вам нужны EJB, вам понадобится что-то вроде TomEE, которое Tomcat распространяется на полную поддержку EE. Или используйте эту Glassfish.

Что лучше всего зависит от ваших конкретных требований: вам нужно/больше использовать развязку модулей, или вы предпочитаете согласованность и надежность, которые вы получаете вместе. EJB также имеют некоторые дополнительные преимущества, которые могут представлять интерес, но они не имеют отношения к каждому проекту. Обратите внимание, что помимо упомянутых альтернатив есть другие, такие как JMS-связь, связь HTTP REST и использование OSGi для развязки пакетов.

О том, почему было бы полезно развернуть проект как модуль EAR, указав википедию: «EAR (Enterprise ARchive) - это формат файла, используемый Java EE для упаковки одного или нескольких модулей в один архив, чтобы развертывание различных модулей на сервер приложений происходит одновременно и когерентно. Он также содержит файлы XML, называемые дескрипторами развертывания, которые описывают, как развернуть модули. ». Таким образом, в основном вы получаете преимущества сочетания, которые сводятся к надежности, вы всегда знаете, как ваши модули развертываются в отличие друг от друга. Модули EAR очень хорошо поддерживают механизмы EE, такие как EJB-модули, и вы получаете управляемый контейнер.

Существует уже нить When is it appropriate to use an EAR and when should your apps be in WARs?, что может представлять интерес.

+0

Спасибо за ваш ответ. Однако теперь у меня есть другой вопрос. Если мы решили развернуть проект как несколько ВОЙН, как должна быть сделана связь между WAR? Мы думали об использовании веб-сервисов ApacheCXF, но мы читаем, что использование EJB было бы лучше с точки зрения производительности. Кроме того, можно ли это сделать лучше? (Должны ли мы также читать о JMS и OSGi?) – user2100776

+0

Веб-сервисы четко определены в стандартах и ​​существуют хорошие механизмы безопасности, а также кроссплатформенная поддержка, но они также сложны, несколько хрупки для реализации, а некоторые другие средства могут быть более эффективными как вы говорите. Нет никакого ответа относительно того, какой метод вы должны использовать, это зависит от вашего варианта использования. JMS очень эффективна, понятна и устойчива, и легче понять, чем OSGi, я бы сказал, но они оба тоже возможности. – eis

+0

Большое вам спасибо за советы. – user2100776