Загрузка классов в Weblogic - PullRequest
0 голосов
/ 15 апреля 2020

У нас довольно большое монолитное c веб-приложение, и мы пытаемся изолировать компоненты для улучшения общей архитектуры системы. Прямо сейчас наше ухо выглядит так:

+-- /lib
| +-- a.jar
| +-- b-1.0.jar
+-- EJBs.jar
+-- app1.war
+-- app2.war
  +-- b-2.0.jar

Приложение app2 должно использовать тот же экземпляр a.jar, что и EJBs.jar, но оно должно иметь возможность использовать версию b.jar, отличную от Остальная часть приложения.

Насколько я понимаю, в weblogi c соответствующая конфигурация находится в weblogic-application.xml, и там мои друзья <prefer-web-inf-classes> и <prefer-application-package>

Что я понимаю, так это то, что я может заставить Weblogi c отдавать предпочтение библиотекам из EAR библиотекам сервера приложений, но мне кажется, что я не могу определить порядок в EAR, а внутри - app2.war. классы b-2.0.jar должны быть предпочтительными.

Я также дошел до того, что понял, что можно переопределить иерархические загрузчики классов, используя <classloader-structure>. Это, однако, приведет к ситуации, когда a.jar больше не виден для app2.war. К сожалению, требуется, чтобы EJBs.jar и app2.war использовали один и тот же экземпляр a.jar.

Для упрощения работы: app2.war не требует доступа к EJBs.jar или app1.war.

В основном, я могу выбрать следующие варианты:

  1. Полностью изолировать загрузчики классов и предоставить a.jar извне
  2. Инвертировать иерархию загрузчика классов, чтобы app2.war получал классы b-2.0.jar с более высоким приоритетом
  3. Явно исключить классы b-1.0.jar из app2.war
  4. Что-то совершенно крутое, о чем я не думал.

Любая идея, что из вышеперечисленного технически осуществимо (и как) или какие варианты я пропустил?

...