우리는 Apache HTTPClient 3을 사용하여 HTTP 요청을하는 여러 응용 프로그램을 가지고 있습니다. 최근에 우리는 다양한 이유로 HTTPClient 4를 사용하는 웹 서비스 클라이언트를 만들기 시작했습니다. Apache 입장에서는 "주요 릴리스는 역 호환되지 않습니다"입니다. 버전 4를 사용하기 위해 모든 프로젝트를 업데이트하고 싶지만 간단하지는 않습니다.Java에서 패키지의 여러 버전에 액세스
내 주된 질문은 다소 일반적인 것이지만, 나의 특별한 질문이 있습니다. HTTPClient 버전 3과 4를 같은 응용 프로그램에서 어떻게 사용할 수 있습니까? 우리의 경우 응용 프로그램은 웹, 데스크탑 또는 명령 줄 응용 프로그램이 될 수 있습니다.
반 폐쇄 된 것으로 보이는 SO question for java-dynamically-load-multiple-versions-of-same-class을 읽었지만 동적 부분에 대해서는별로 신경 쓰지 않습니다. 사실 나는 JAR이 app (예 : WEB-INF/lib for web apps)와 함께 선적되기를 원합니다. OSGi이이 질문과 유사한 질문을 많이하는 것을 보았습니다. 그러나 지나치게 복잡하거나 어쩌면 지나치게 복잡한 것 같습니다. 간단한 예가 그렇지 않다는 것을 증명할 수있다). 결국
나는 팀에게 그들이에서 삭제할 수 있습니다 항아리의 집합을 손으로 할 수 있도록하려면 그것은 단지 HTTP 클라이언트 3.
이것은 아키텍처 관리가 좋은 아이디어 였을 것입니다. 버전 3을 고수하거나 모든 것을 버전 4로 옮길 것입니다. 이제 패치 워크 솔루션 구현 비용을 지불해야합니다. 시간이 지남에 따라 악화된다. – Anon
@Anon : 죄책감은 없지만 상황을 알지 못하고 그런 담요 진술을하는 데 조언을하지 않습니다. 나는 그러한 의견을 피하기 위해 "여러 가지 이유로"말했다. –
OSGi는 적어도 작동합니다 (잔인한 것인지 아닌지 결정해야합니다.) 라이브러리의 각 버전마다 하나씩 두 개의 웹 서버를 갖는 것 이외에 다른 작업을 수행하는 간단한 방법을 알지 못합니다. –