Проблема с использованием библиотеки Quartz в Liferay/Glassfish с Vaadin

Я столкнулся со странной проблемой, связанной с запуском библиотеки Quartz на моем портале liferay на сервере Glassfish. Приложение разделено на две части: веб-приложение на основе Vaadin, которое запускает/останавливает задание кварца, и другое, содержащее логику заданий.

Поскольку часть логики задания зависит от интерфейса задания, мне нужно развернуть Quartz как библиотеку osgi. При этом все работает нормально, и мое веб-приложение может видеть установленный модуль задания, но во время запуска задания выдает следующую ошибку.

previously initiated loading for a different type with name "org/quartz/Trigger"

Я предполагаю, что это происходит потому, что я также предоставил библиотеку Quartz в моем web-inf/lib. Но если я удалю это, он выдаст еще одну ошибку для зависимостей Quartz.

Единственное возможное решение, которое у меня есть сейчас, — это удалить зависимости Quartz из второго компонента, который имеет бизнес-логику задания (скорее реализует org.quartz.Job; создайте другой интерфейс).

Есть ли другой способ разобраться с этим???


person dhaval    schedule 29.11.2010    source источник


Ответы (1)


Пытаетесь исправить зависимости вашего кварца в файле WAR - используйте import-package и удалите 2-й кварц из WEB-INF/lib.

Также убедитесь, что зависимость кварца на самом деле является пакетом или что вы динамически оборачиваете его.

Похоже, у вас проблемы с загрузкой классов из-за нескольких копий Trigger. Сообщение об ошибке - кварц, говорящий вам, что он загружен Trigger из другого загрузчика классов, чем раньше. Вам определенно не нужны две идентичные версии jar в вашем приложении.

person earcam    schedule 20.09.2011