У меня развернутое ухо, которое я развертываю на сервере приложений JBoss. Я занимаюсь рефакторингом своего кода, чтобы мои классы сущностей были объявлены в отдельной библиотеке jar, которые могут совместно использоваться различными модулями в ухе.На сервере приложений JBoss, как я могу убедиться, что все модули в развертывании используют один и тот же загрузчик классов для библиотеки jar?
Однако, сейчас я получаю следующее сообщение об ошибке:
java.lang.ClassCastException: model.project.Project cannot be cast to model.EntityBase
EntityBase
является публичным абстрактным классом. Project
- открытый класс, который распространяется на EntityBase
. Оба класса были перенесены в мою новую библиотеку jar. Эта ошибка приводит меня к выводу, что есть проблема с загрузчиком классов.
Мое ухо структурирована следующим образом:
myapp.ear
|
|--- webportal.war
|--- restapi.war
|--- dal.jar
Мои объекты были определены в dal.jar, который используется в военных библиотек, доступ к своей базе данных. Теперь я удалил объекты из dal.jar и поместил их в отдельную model.jar. Я перечислил model.jar как зависимость в pom.xml для myapp.ear. Он также указан как зависимость в файлах pom.xml для webportal.war, restapi.war и dal.jar. В результате model.jar теперь развернут в каталоге lib
в myapp.ear.
Правильно ли я понимаю причину исключения ClassCastException? Если да, как мне упаковать приложение, чтобы все классы в model.jar были загружены одним и тем же загрузчиком классов?