Выпуск классных загружений в JBOSS AS 6 с EJBS и WARS развернутыми бок о бок

StackOverflow https://stackoverflow.com/questions/4415118

Вопрос

Я нашел довольно сложенную проблему, работая над проектом с несколькими развертывами EE. Проблема, по-видимому, является слиянием зависимости от гибернационных зависимостей таймерсервиса EJB3.1 и недостаточной изоляции классов.

Начиная с наличия как 6 CR1, я развернул войну. Эта война содержит гибернатные банки.

Затем я развернул EJB (технически MDB) в банке. Когда я делаю это, JBoss затем запускает таймерсервис, чтобы обеспечить поддержку Full EJB3.1. Timerservice зависит от гибернации. Затем Джбосс продолжает ударить, потому что класс загрузчика обнаруживает уже загруженную версию Hibernate.

Я даже попробовал упаковать каждый из них в отдельное ухо и развернуть их. Нет кости. Что-то о том, как загружается таймерсервис, кажется, полностью игнорирует классущую изоляцию.

Мой вопрос в том, есть ли что-нибудь, что я могу с этим сделать, не хватает отключения таймерсервиса? Я намеревался использовать его нефтевые функции позже в проекте. Я, честно говоря, даже не знаю, является ли это ошибкой, поскольку документация по классу на JBOSS, кажется, была написана сердитым Klingons. Тем не менее, я надеюсь на работу - вокруг.

РЕДАКТИРОВАТЬ - На самом деле, у меня даже нет способа отключения таймерсервиса, так как каждая из моих усилий было сорвано так или иначе. Поскольку он стоит, я не вижу, как кто-то может развернуть Hibernate и EJBS к тому же экземпляру jboss.

РЕДАКТИРОВАТЬ - В конечном итоге мне удалось развернуть, не включая гибернатные банки в моем MDB или войне, а полагаться на реализацию Hibernate Jboss. Это неудовлетворительное; Я остался с ощущением, что нет изоляции между контейнером и моим бобами. Но, по крайней мере, это текущая версия Hibernate (3.6).

Это было полезно?

Решение

Не уверен, что вы пробовали до сих пор, но это должно работать:

Ухо, содержащий:

  • Баночка для EJBS
  • Баночка для JPA
  • Война для WebApp
  • Все библиотеки вам нужны.
  • jboss-app.xml, с уникальным «погрузчиком-репозиторием»

А также включать jboss-app.xml в Meta-inf ушей:

<jboss-app>
  <loader-repository>...</loader-repository>
</jboss-app>

Вы можете проверить эти две страницы:

http://community.jboss.org/wiki/ClassloadingConfiguration

http://community.jboss.org/wiki/jbossclassloadingUsecases.

Но я бы пересматривал решение объединения вашей собственной версии Hibernate. Хотя это может звучать разумным, как и в том, чтобы предоставить вам среду «прикладного хостинга», и она уже предоставляет некоторые услуги, такие как настойчивость. Итак, оставь эту обеспокоенность как ;-)

Другие советы

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

Кроме того, я знаю, jboss4 не был настроен по умолчанию для выделения каждого приложения в свой класс загрузки, поэтому все классы были загружены из одного и того же пула. Не уверен, что это все еще дело, но стоит расследовать. При установке JBOSS вы можете настроить его, чтобы выделить класс класса каждого приложения, если вы так пожелаете. Хотя, если есть версия Hibernate в JBoss Common / Lib Dir, изолируя классовые погрузчики не помогут.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top