Chúng tôi có một số ứng dụng sử dụng Apache HTTPClient 3 để thực hiện các yêu cầu HTTP. Gần đây chúng tôi cũng đã bắt đầu tạo các máy khách dịch vụ web sử dụng HTTPClient 4 vì nhiều lý do khác nhau. Lập trường Apache là "các bản phát hành chính không tương thích ngược". Trong khi tôi muốn cập nhật tất cả các dự án của chúng tôi để sử dụng phiên bản 4, điều đó đơn giản là không khả thi.Truy cập nhiều phiên bản của gói trong Java
Vì vậy, trong khi câu hỏi chính của tôi là khá chung chung, thì câu hỏi cụ thể của tôi là. Tôi có thể sử dụng HTTPClient phiên bản 3 và 4 trong cùng một ứng dụng như thế nào? Trong trường hợp của chúng tôi, một ứng dụng có thể là một trang web, máy tính để bàn hoặc ứng dụng dòng lệnh.
Tôi đã đọc số SO question for java-dynamically-load-multiple-versions-of-same-class dường như bán gần nhưng tôi không quan tâm quá nhiều đến phần động. Trong thực tế, tôi muốn các JAR được vận chuyển với ứng dụng (ví dụ, WEB-INF/lib cho các ứng dụng web) Tôi cũng thấy một số câu hỏi tương tự như câu hỏi này nhưng dường như quá mức hoặc có lẽ quá phức tạp (có thể một ví dụ đơn giản có thể chứng minh bằng cách khác).
Cuối cùng tôi muốn để có thể trao một nhóm tập hợp các lọ rằng họ có thể thả vào và nó chỉ hoạt động độc lập với dự án của họ sử dụng HTTP khách hàng 3.
Đây là trường hợp quản trị kiến trúc là một ý tưởng hay: quyết định gắn bó với phiên bản 3 hoặc chuyển mọi thứ sang phiên bản 4. Bây giờ bạn phải trả chi phí triển khai cho giải pháp chắp vá và sẽ chỉ trở nên tồi tệ hơn theo thời gian. – Anon
@Anon: Không có hành vi phạm tội nhưng không biết tình hình tôi sẽ không tư vấn làm như một tuyên bố chăn. Tôi đã nói "vì nhiều lý do" để tránh những nhận xét như vậy. –
OSGi ít nhất là công trình (Bạn cần phải quyết định nếu nó quá mức cần thiết hay không), tôi không biết cách nào khác để làm điều này ngoài việc có hai máy chủ web, một cho mỗi phiên bản của thư viện. –