2017-02-17 13 views
4

Я хотел понять parent-last Загрузка в приложении JBoss application server. У нас есть устаревшее приложение, развернутое в JBoss 4.2.1 GA. Для чего мы пытаемся загрузить родительскую последнюю.JBoss ClassLoading Parent-Last loading

Я имею в виду это link. Мне хотелось узнать родительскую последнюю загрузку. Так создано простое приложение maven jar package с maven-jar-plugin и конфигурацией -> addDefaultImplementationEntries = true. Я создал 2 jar версии 1.0.0 и 1.0.1 из того же приложения maven maf. В банке есть один класс TestClass и простой метод возврата String, который возвращает версию jar, из которой загружен класс. что я хотел испытать использование java2ClassLoadingCompliance. Я упаковал банку версии 1.0.0 на сервере/развертывании/MyApplication/WEB-INF/lib (Мое веб-приложение - это простое приложение сервлета, которое вызывает метод класса, таким образом печатая номер версии, с которой она была вызвана .) и версии 1.0.1 jar в сервере/lib.

Примечание: Логически это не имеет смысла использовать более старую версию баночки в применении и опрокинув его с новой версией в настоящее время сервера Lib, но просто хотел испытать нагрузку класса.

Я попытался следующий

  1. без каких-либо JBoss-web.xml в папке META-INF.
  2. Я пробовал введение jboss-we.xml в META-INF и делал то же самое с java2ClassLoadingCompliance = false.
  3. С java2ClassLoadingCompliance = true.

Все время класс из приложения lib загружается приложением.

Мой JBoss-web.xml выглядит reference

<jboss-web> 
    <class-loading java2ClassLoadingCompliance="true"> 
     <loader-repository> 
     com.example:archive=JBossClassLoadingTestServlet-0.0.1-SNAPSHOT.ear 
     <loader-repository-config>java2ParentDelegation=true</loader-repository-config> 
     </loader-repository> 
    </class-loading> 
</jboss-web> 

Может кто-то помочь мне понять родительскую-последней конфигурации в JBoss? Какая ошибка я делаю здесь, когда всегда загружается класс из приложения lib?

+0

О бог JBoss 4.2, что случилось с вами? : -o – Aaron

ответ

0

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

В вашем случае вы просто переопределяете lib в одном банке.

Ниже от Servlet Spec:

Рекомендуется также, что класс приложения загрузчик реализован так , что классы и ресурсы, упакованные в WAR загружаются в предпочтение классов и ресурсов, находящихся в контейнере шириной библиотеки JAR.

Итак, JBoss следует спецификациям и всегда загружает приложение lib.

Я не нашел такой старой версии документ, но она должна подобно тому, как AS7:

В порядке наивысшего приоритета к низшему приоритет

  1. системы Зависимости - Это зависимостей, которые добавляются к модулю автоматически контейнером, включая API Java EE.
  2. Зависимости от пользователя - это зависимости, которые добавляются через JBoss-deployment-structure.xml или через запись Dependencies: manifest.
  3. Локальный ресурс - файлы классов, упакованные внутри самого развертывания, например. файлы классов из WEB-INF/классов или WEB-INF/lib войны.
  4. Зависимости между развертываниями - это зависимости от других развертываний в развертывании ушей. Это может включать классы в каталоге lib уха или классы, определенные в других банках EJB.

Похожие: