Tenemos varias aplicaciones que utilizan Apache HTTPClient 3 para realizar solicitudes HTTP. Recientemente, también hemos comenzado a crear clientes de servicios web que utilizan HTTPClient 4 por varias razones. La postura de Apache es que "las principales versiones de no son compatibles con versiones anteriores". Si bien me gustaría actualizar todos nuestros proyectos para usar la versión 4, eso simplemente no es factible.Acceda a múltiples versiones de un paquete en Java
Entonces, aunque mi pregunta principal es bastante general, mi pregunta en particular es. ¿Cómo puedo usar HTTPClient versión 3 y 4 en la misma aplicación? En nuestro caso, una aplicación puede ser una aplicación web, de escritorio o de línea de comandos.
He leído el SO question for java-dynamically-load-multiple-versions-of-same-class que parece semi cerrado pero no me importa tanto la parte dinámica. De hecho, me gustaría que los JAR se envíen con la aplicación (por ejemplo, WEB-INF/lib para aplicaciones web). También veo OSGi mencionado mucho en preguntas similares a esta, pero parece ser excesivo o quizás demasiado complejo (tal vez un ejemplo simple podría demostrar lo contrario).
Al final quiero ser capaz de entregar un equipo de un grupo de botes que pueden pasar y simplemente funciona independiente de su proyecto utilizando HTTP Client 3.
Este es un caso en el que la gobernanza arquitectónica hubiera sido una buena idea: tomar la decisión de mantener la versión 3 o mover todo a la versión 4. Ahora debe pagar los costos de implementación de una solución de mosaico, y solo empeorar con el tiempo – Anon
@Anon: Sin ánimo de ofender pero sin conocer la situación, no aconsejaría hacer una declaración tan general. Dije "por varias razones" para rechazar tales comentarios. –
OSGi al menos funciona (debe decidir si es exagerado o no), no conozco ninguna forma trivial de hacer esto aparte de tener dos servidores web, uno para cada versión de la biblioteca. –