Nous avons plusieurs applications qui utilisent Apache HTTPClient 3 pour faire des requêtes HTTP. Récemment, nous avons également commencé à créer des clients de services Web qui utilisent HTTPClient 4 pour diverses raisons. La position Apache est que "versions majeures ne sont pas rétro-compatibles". Bien que j'aimerais mettre à jour tous nos projets pour utiliser la version 4, ce n'est tout simplement pas faisable.accès multiples versions d'un package en Java
Ainsi, alors que ma principale question est plutôt générale, ma question est particulièrement. Comment puis-je utiliser HTTPClient version 3 et 4 dans la même application? Dans notre cas, une application peut être une application Web, de bureau ou de ligne de commande.
J'ai lu le SO question for java-dynamically-load-multiple-versions-of-same-class qui semble demi proche, mais je ne me soucie pas tant de la partie dynamique. En fait, je voudrais que les JAR soient livrés avec l'application (exemple, WEB-INF/lib pour les applications web). Je vois aussi OSGi beaucoup dans des questions similaires à celui-ci mais il semble être trop compliqué ou peut-être trop complexe (peut-être un exemple simple pourrait prouver le contraire).
En fin de compte, je veux être en mesure de remettre une équipe un ensemble de pots qu'ils peuvent déposer et il fonctionne juste indépendamment de leur projet à l'aide du client HTTP 3.
Il s'agit d'un cas où la gouvernance architecturale aurait été une bonne idée: prendre la décision de rester avec la version 3 ou tout déplacer vers la version 4. Maintenant, vous devez payer des coûts d'implémentation pour une solution patchwork. empirer au fil du temps. – Anon
@Anon: Pas d'offense mais sans connaître la situation, je ne conseillerais pas de faire une telle déclaration générale. J'ai dit "pour diverses raisons" pour éviter de tels commentaires. –
OSGi au moins fonctionne (vous devez décider si c'est exagéré ou non), je ne connais pas de façon triviale de le faire autre que d'avoir deux serveurs Web, un pour chaque version de la bibliothèque. –