Как бороться с конфликтами библиотек на серверах приложений?

Сторонние библиотеки часто включаются сервером приложений, на котором выполняется развертывание, и классифицируются с библиотеками, включенными в ваше приложение. До сих пор я справлялся с этим самым простым и хакерским способом: удалением библиотек на сервере приложений.

В нашем случае все в порядке, никто не полагается на сервер приложений для предоставления им каких-либо библиотек. Но если бы я запускал свое приложение вместе с множеством других приложений, что опять же может зависеть от библиотек, включенных сервером приложений, это не было бы решением.

Как это должно быть решено (чисто)? Как ты это делаешь?

Примером проблемы может быть следующее: вы создаете приложение jax-rs, используя cxf, hibernate и jackson, и развертываете его в Glassfish 2.1.1. Glassfish предоставляет библиотеку asm 3.1, но это вызывает конфликты с hibernate при использовании несовместимой версии 1.5. аналогично приложению требуется jackson 1.8.2 (из-за исправления ошибки), но Glassfish 2.1.1 поставляется с версией 0.9. БУМ. Любой способ исправить это, кроме простого удаления оскорбительных библиотек?


person oligofren    schedule 05.09.2011    source источник
comment
Очень тесно связан с: stackoverflow.com/questions/6759633/   -  person oligofren    schedule 06.09.2011


Ответы (1)


рассмотрите возможность использования:

asadmin deploy --libraries ...
person Alexis MP    schedule 07.09.2011
comment
Хороший! Но можете ли вы также использовать это для исключения общих библиотек, если военный файл имеет собственную версию? - person oligofren; 09.09.2011
comment
работает ли это для библиотеки, которая является удаленным интерфейсом для EJB? - person Thufir; 03.10.2014