Я нашел довольно сложную проблему при работе над проектом с несколькими развертываниями EE. Проблема заключается в слиянии зависимостей Hibernate от TimerService EJB3.1 и недостаточной изоляции загрузчика классов.Проблема с загрузчиком Classloader в JBoss AS 6 с развертыванием EJB и WARs бок о бок
Начиная с запаса AS 6 CR1 build, я развертываю WAR. Эта WAR содержит баки Hibernate.
Затем я развертываю EJB (технически MDB) в JAR. Когда я это делаю, JBoss запускает TimerService, чтобы обеспечить полную поддержку EJB3.1. TimerService зависит от спящего режима. JBoss начинает забастовку, потому что загрузчик классов обнаруживает уже загруженную версию Hibernate.
Я даже попробовал упаковать каждый из них в отдельный EAR и развернуть их. Нет кубиков. Что-то о том, как загружается TimerService, похоже, полностью игнорирует изоляцию классов.
Мой вопрос в том, есть ли что-нибудь, что я могу с этим сделать, без отключения TimerService? Я собирался использовать его отличные функции позже в проекте. Я, честно говоря, даже не знаю, является ли это ошибкой, поскольку документация по загрузке классов для JBoss, похоже, написана сердитыми клингонами. Тем не менее, я надеюсь на обход.
EDIT - На самом деле, у меня даже нет возможности отключить TimerService, так как каждое из моих усилий было так или иначе сорвано. Как бы то ни было, я не вижу, как каждый может развернуть Hibernate и EJB в одном экземпляре JBoss.
EDIT - В конечном итоге мне удалось развернуть, не включая баки Hibernate в моем MDB или WAR, но полагаться на реализацию Hibernate JBoss. Это неудовлетворительно; У меня осталось ощущение, что между контейнером и моими бобами нет никакой изоляции. Но, по крайней мере, это текущая версия Hibernate (3.6).
На данный момент мы перестали связываться в Hibernate как наше решение этой проблемы, полагаясь вместо этого на включение JBoss JAR. Две причины, которые заставляют меня немного неудобно: а) если в какой-то момент в будущем мы перейдем к другой версии Hibernate и b), что обнаженные EJB/MDB (в JAR, а не в EAR) не кажутся работать с этим. Думаю, есть проблемы с classpath с поиском файлов XML в JAR? Спасибо за ссылки на материал загрузчика классов; Я определенно посмотрю на них. –