Tôi đang viết một chương trình máy chủ được sử dụng để chạy thử nghiệm đơn vị của một API (hiển thị nhiều thông tin và cung cấp truy cập web để kiểm soát /giám sát toàn bộ điều) ...Tôi có thể tự động tải và tải lại (các phiên bản khác của cùng một) JAR không?
API này là được biết đến với máy chủ trong thời gian biên dịch và được cung cấp như một JAR.
Để có thể so sánh giữa các kết quả thử nghiệm đơn vị của phiên bản khác nhau của API (không khởi động lại máy chủ), Tôi muốn để có thể dỡ bỏ các phiên bản 'hiện tại' của API, và tải lại một cái mới hơn (hoặc cái cũ hơn).
Tôi không muốn sử dụng URLClassLoader và gọi mỗi phương pháp duy nhất bởi tên
(sử dụng getDeclaredMethod("someMethod")
),
vì máy chủ yếu phụ thuộc vào các API và nó sẽ là phức tạp để 'bọc' mỗi gọi phương thức theo cách bẩn thỉu.
Tôi đã suy nghĩ: Vì tất cả các giao diện của tất cả phiên bản của JAR là cùng, không thể tôi nó bằng cách nào đó tải lại một phiên bản khác của JAR (mà không có bằng-name-invokation?).
Lưu ý: Tôi đang sử dụng Java SE (6) và Java EE mới nhất (5).
Nếu bạn nghĩ, những gì tôi đang cố gắng đạt được là không thể, vui lòng đề xuất 'giải pháp' hoặc một khái niệm khác.
Xem thêm: http://stackoverflow.com/questions/148681/unloading-classes-in-java – sleske