Я пытаюсь создать архив sar, содержащий MXBean, и развернуть его в JBoss 7.
До недавнего времени у меня была проблема со ссылками на классы из других библиотек в моем классе MXBean, потому что JBoss не загружал эти библиотеки независимо от того, где в архиве SAR я их помещал.
Я узнал, что можно настроить путь к классам SAR через файл jboss-deployment-structure.xml, помещенный в META-INF. Моя версия этого файла выглядит так:
<jboss-deployment-structure>
<deployment>
<resources>
<resource-root path="management.api.jar" />
</resources>
</deployment>
Now the classes from the "management.api.jar" are loaded.
Проблема, с которой я сейчас сталкиваюсь, заключается в следующем: если интерфейс MXBean хранится в management.api.jar, а класс, реализующий его, находится непосредственно в архиве SAR, то, когда JBoss читает jboss-service.xml и пытается для создания mxbean выдается исключение ClassNotFoundException, указывающее на интерфейс (то есть в management.api.jar). Следовательно, хотя классы из внешнего jar-файла загружаются нормально (я проверил это, фактически вызвав метод, который ссылался на класс из jar-файла, и это сработало), кажется, что когда JBoss регистрирует bean-компонент, он не проходит весь путь к классам как определено в jboss-deployment-structure.xml.
В настоящее время я застрял, и я подозреваю, что это ошибка в том, как JBoss обрабатывает загрузку класса. Если кто-нибудь знает способ обойти это (кроме извлечения интерфейса из банки и помещения его непосредственно в архив SAR, потому что это нарушит всю идею «api»), пожалуйста, дайте мне знать.
Спасибо!