Какой-либо инструмент для просмотра изображения дерева загрузчика класса?

Где я работаю, мы используем Знатока 2, и у нас есть довольно хороший архетип для наших проектов. Цель состояла в том, чтобы получить хорошее разделение проблем, таким образом мы определили структуру проекта с помощью нескольких модулей (один для каждого приложения 'слой'): - распространенный: общий код используется другими слоями (например, i18n) - объекты: доменные объекты - репозитории: этот модуль содержит интерфейсы дао и реализации - сервисы-intf: интерфейсы для сервисов (например, UserService...) - сервисы-impl: реализации сервисов (например, UserServiceImpl) - сеть: все относительно веб-контента (например, css, jsps, jsf страницы...) - ws: веб-сервисы

Каждый модуль имеет свои собственные зависимости (например, репозитории могли иметь jpa), и некоторые - широкий проект (таким образом, они принадлежат общего модуля). Зависимости между различными модулями проекта ясно разделяют вещи (например, веб-слой зависит от уровня служб, но не знает о слое репозитория).

Каждый модуль имеет свой собственный основной пакет, например, если пакет приложений является "com.foo.bar", то мы имеем:

com.foo.bar.common
com.foo.bar.entities
com.foo.bar.repositories
com.foo.bar.services
com.foo.bar.services.impl
...

Каждый модуль уважает стандартную структуру проекта знатока:

   src\
   ..main\java
     ...\resources
   ..test\java
     ...\resources

Модульные тесты на данный слой легко находят свое место под \src\test... Все, что является зависящим от домена, имеет, это - место в модуле объектов. Теперь что-то как FileStorageStrategy должно войти в модуль репозиториев, так как мы не должны знать точно, какова реализация. В сервисном слое мы только знаем интерфейс репозитория, мы не заботимся о том, что определенная реализация (разделение проблем).

существует несколько преимуществ для этого подхода:

  • четкое разделение проблем
  • каждый модуль packageable как банка (или война в случае веб-модуля) и таким образом допускает более легкое повторное использование кода (например, мы могли установить модуль в репозитории знатока и снова использовать его в другом проекте)
  • максимальная независимость каждой части проекта

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

9
задан Maksim 5 November 2009 в 05:08
поделиться

2 ответа

В JBoss вы можете регистрировать все события загрузчика классов , которые должны точно сказать вам, где находятся ваши конфликтующие классы, если вы можете просеять многословие.

Или вы можете перейдите в jmx-console, найдите раздел jboss.classloader, найдите запись для вашего уха (что-то вроде id = "vfszip: /apps/jboss-5.1.0.GA/server/default/deploy/your. war / ") и вызовите findClassLoaderForClass для класса, который вызывает проблемы.

3
ответ дан 3 November 2019 в 08:20
поделиться

Какой сервер приложений вы используете?

Не думаю, что такой инструмент существует.

0
ответ дан 3 November 2019 в 08:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: