Развертывание многоуровневого приложения - PullRequest
2 голосов
/ 27 мая 2011

Я хочу создать и развернуть свое первое многоуровневое приложение Java EE 6 с веб-и бизнес-уровнями, работающими на отдельных физических серверах Glassfish 3.1.

Мне кажется, я понимаю, что требуется от теоретического высокоуровневого взгляда, но мне не ясны детали и мелкие детали.

Мой текущий план выглядит следующим образом:

  • Создание приложения Maven Enterprise в NetBeans 7.
  • Предоставление EJB-компонентов Session Facade через удаленный интерфейс.
  • Используйте в компонентах поддержки JSF EJB-компоненты Session Facade через поиск JNDI.
  • Развертывание EJB JAR на одном сервере и веб-WAR на другом.

Я бы очень признателен за некоторые указания:

  • Структура приложения.
  • Исправьте поиск JNDI с отдельными серверами. Возможна ли инъекция?
  • Создание соответствующих архивов.
  • Конфигурация развертывания, позволяющая связать уровни.

Ответы [ 2 ]

3 голосов
/ 27 мая 2011

Если вы не знаете, что будете обслуживать много запросов в секунду или у вас слишком большая бизнес-логика с большой нагрузкой на данные и / или ЦП, то все должно быть в порядке, если вы развернете оба уровня на одном сервере приложений. Начав с развертывания на одном сервере приложений Glassfish с использованием локальных интерфейсов, вы можете пропустить много сложностей в среде выполнения.

Это, в свою очередь, позволит вам использовать простейшую форму @ EJB-инъекции на веб-уровне для доступа к фасадам сеансов на бизнес-уровне. Локальные интерфейсы работают быстрее, потому что сервер приложений может передавать ссылки, а не прокси RMI между уровнями, и это позволяет вам пропустить поиск JNDI. Вы всегда можете изменить аннотацию позже или ввести удаленные интерфейсы, если позже вы найдете другие причины для развертывания уровней на отдельных серверах.

Glassfish поддерживает кластеризацию, поэтому вам никогда не придется явно разделять два уровня - все зависит от фактических моделей использования, поэтому мониторинг производительности является ключевым.

Развертывание веб-уровня в качестве WAR и бизнес-логики в качестве EJB-файла является правильным решением. В зависимости от размера и логической структуры вашего приложения вы можете разбить его на несколько модулей.

Maven заботится о создании архивов. Убедитесь, что вы определили подпроект для каждого архива войны и jar, а также подпроект для сборки EAR-файла. Последний проект будет загружать файлы war и jar, созданные другими подпроектами. Объединяя все проекты вместе с master maven project и вуаля, вы можете гибко создавать каждый компонент отдельно, создавать весь объект или любую промежуточную комбинацию.

2 голосов
/ 29 мая 2011

Вы выбрали трудный путь, как другие отмечали в комментариях и ответах ...

Давайте начнем со структуры вашего приложения. В итоге у вас будет четыре достижения ... два, которые вы развернете:

  1. "обычный" jar для интерфейса Remote вашего EJB (jar-of interfaces)

  2. банка EJB с реализацией вашего EJB

  3. архив EAR, который будет содержать jar-of-interfaces (в подкаталоге / lib) и EJB-файл (в 'root').

  4. файл WAR, содержащий код, который использует интерфейс Remote вашего EJB. Это будет иметь jar-интерфейсов в WEB-INF / lib.

Остальная часть этого ответа основана на FAQ EJB . Наиболее применимой частью этого документа является здесь .

Вы можете добавить EJB в ManagedBean. Вам не нужно будет использовать метод поиска точек в вашем ManagedBean.

Вам нужно будет использовать corbaname для вашего компонента в файле glassfish-web.xml.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...