Использование одного и того же загрузчика классов для уха и войны - PullRequest
0 голосов
/ 24 сентября 2019

В настоящее время у нас в ухе более 100 войн / эйбсов.Поскольку мы не хотим развертывать их все всегда, мы хотели бы разделить развертывание на:

  • ejb-ear

    • ejb1.jar
    • entity.jar
  • first.war

  • second.war
  • 3rd.war

Как можно просто найти файл ejb1.jar из одной из развернутых войн - если это возможно.

Я прочитал следующий документ, но не могу понять, как заставить это работать.

Я могу найти ejb в ухе, но не могу привести его к Интерфейсу.Что кажется правильным, потому что это разные загрузчики классов.

См .: Java EE: Прокси не может быть преобразован в локальный интерфейс, возможно, проблема с загрузкой классов?

Ответы [ 2 ]

0 голосов
/ 29 сентября 2019

Могут быть разные решения.

1) Упакуйте в EAR только те WAR-ы, которые используют EJB.Затем вы можете использовать EJB через локальные интерфейсы.Все остальные WAR-файлы все еще могут быть развернуты независимо, и им не требуется тот же загрузчик классов, что и EAR.

2) Используйте удаленные EJB.Упакуйте в WARs интерфейсы EJB, которые они используют.Опять же, нет необходимости в том же загрузчике классов.И если вы беспокоитесь о производительности удаленных EJB, то сначала проверьте настоящую производительность.Разработчики Jboss значительно оптимизировали производительность.Например, читайте здесь , они оптимизировали EJB-вызовы

..., чтобы избежать ненужных коммуникаций на стороне сервера, которые обычно включают сетевые вызовы, сортировку / демаршаллинг и т. Д.

3) Анализ зависимостей WAR и EJB, а также зависимостей между EJB друг от друга.Попробуйте определить 4-5 групп или «кластеров» EJB и WAR, которые очень близки друг к другу и используют только несколько EJB из других групп, или даже не используют EJB из других групп.Затем упакуйте такие группы в отдельные EAR.Например, вы можете иметь:

  • Основной EAR, который предоставляет 20 EJB, отвечающих за управление пользователями и разрешениями
  • Один EAR с 10 EJB и 5 WAR для управления продуктом
  • Один EAR с 20 EJB и 30 WAR для управления заказами
  • Один EAR с ... EJB и ... WAR для управления отгрузками

Тогда в большинстве случаев вы будетеразверните только один из этих EAR, и поэтому время развертывания будет в 4-5 раз быстрее.

0 голосов
/ 28 сентября 2019

Либо вы используете удаленный интерфейс, который приводит к маршаллингу и демаршаллингу (производительности), либо вы вводите зависимость модуля от WAR-ов в EAR, добавляя deploy.MY_DEPLOYMENT_NAME, например, к jboss-deployment-structure.xml.Затем вы используете тот же загрузчик классов, но ваши WAR-файлы могут перейти в автономный режим при повторном развертывании EAR.

См., Например, https://access.redhat.com/documentation/en-us/jboss_enterprise_application_platform/6.1/html/development_guide/chap-Class_Loading_and_Modules#Dynamic_Module_Naming1

для документации.

...