У нас есть несколько приложений, которые используют HTTP-клиент Apache 3 для создания HTTP-запросов. Недавно мы также начали создавать клиенты веб-сервисов, которые используют HTTPClient 4 по разным причинам. Позиция Apache заключается в том, что «основные выпуски не соответствуют обратному». Хотя мне бы хотелось обновить все наши проекты, чтобы использовать версию 4, это просто невозможно.Доступ к нескольким версиям пакета в Java
Итак, хотя мой основной вопрос довольно общий, мой конкретный вопрос. Как использовать HTTPClient версии 3 и 4 в одном приложении? В нашем случае приложение может быть веб-интерфейсом, рабочим столом или командной строкой.
Я прочитал SO question for java-dynamically-load-multiple-versions-of-same-class, который кажется полукруглым, но мне все равно, о динамической части. На самом деле, я бы хотел, чтобы JARs были отправлены с помощью приложения (например, WEB-INF/lib для веб-приложений). Также я вижу, что OSGi много упоминается в вопросах, подобных этому, но, похоже, он чрезмерен или, возможно, слишком сложный (возможно, простой пример мог бы доказать обратное).
В конце концов, я хочу, чтобы иметь возможность вручить команду набор банок, что они могут упасть в, и он просто работает независимо от их проекта с использованием HTTP Client 3.
Это случай, когда архитектурное управление было бы хорошей идеей: принять решение либо придерживаться версии 3, либо перенести все на версию 4. Теперь вам придется заплатить за реализацию решения для пэчворка, и это будет просто ухудшаться со временем. – Anon
@ Анон: Не обижайся, но, не зная ситуации, я бы не советовал делать такое заявление. Я сказал «по разным причинам», чтобы отразить такие комментарии. –
OSGi, по крайней мере, работает (вам нужно решить, является ли его излишним или нет), я не знаю какого-либо тривиального способа сделать это, кроме как иметь два веб-сервера, по одному для каждой версии библиотеки. –