l10i đã viết: Với OSGi, đây không phải là trường hợp: ứng dụng được tạo thành một bộ bó lớn, mỗi ứng dụng được thiết kế để xử lý một phần riêng biệt của chức năng. Cách tiếp cận này cho phép triển khai nóng trong ứng dụng, vì khuôn khổ được thiết kế để xem xét hiệu ứng khởi động lại bất kỳ cái bình nào mang đến toàn bộ ứng dụng và để các lọ khác phản ứng một cách thích hợp. Điều đó cung cấp khả năng bảo toàn trạng thái ứng dụng nhiều nhất có thể.
Chỉ cần giải thích thêm về điều này một chút, các ứng dụng OSGi tốt nhất là các ứng dụng hướng dịch vụ tích hợp thông qua đăng ký dịch vụ OSGi. Đăng ký dịch vụ này là động, các dịch vụ có thể đến và đi bất cứ lúc nào và người tiêu dùng dịch vụ OSGi phản ứng với tính năng động này một cách thích hợp. Giả sử ứng dụng của bạn bao gồm một số gói, bao gồm gói sử dụng dịch vụ thanh toán (ví dụ: để xử lý thanh toán bằng thẻ tín dụng) và một gói khác cung cấp dịch vụ thanh toán đó. Nếu bạn thấy mình trong tình huống dịch vụ thanh toán cần được cập nhật (vì bạn có sửa chữa quan trọng hoặc có thể bạn đã tìm được nhà cung cấp rẻ hơn, v.v.), bạn có thể cập nhật dịch vụ thanh toán này mà không cần phải hạ người tiêu dùng xuống dịch vụ này. Để đạt được điều này, bạn có thể tự cập nhật gói dịch vụ thanh toán, nhưng tôi khuyên bạn nên cài đặt phiên bản mới của gói dịch vụ thanh toán cùng với phiên bản cũ trước. Điều này là có thể bởi vì OSGi cho phép nhiều phiên bản của cùng một gói cùng tồn tại. Sau đó, khi gói mới được thiết lập và chạy, bạn có thể xóa gói dịch vụ thanh toán cũ tại thời điểm đó người tiêu dùng sẽ tự động lật sang sử dụng gói dịch vụ mới, theo lịch sự đăng ký dịch vụ OSGi.
Kiến trúc như ví dụ trên thực sự mạnh mẽ và tuyệt vời để đảm bảo rằng các ứng dụng doanh nghiệp của bạn luôn hoạt động và có thể nhận ra bằng cách sử dụng dịch vụ OSGi kết hợp với khả năng tự động cài đặt, gỡ cài đặt hoặc cập nhật gói OSGi.
BTW có chi tiết hơn một chút so với ví dụ trên vì các gói cũng có thể được viết để sử dụng tất cả các dịch vụ của một loại cụ thể - điều tốt nhất cho bạn tùy thuộc vào trường hợp của bạn.
Có một số cách để sử dụng đăng ký dịch vụ OSGi, bạn có thể sử dụng nó với ServiceTracker API, mức này khá thấp. Trong hầu hết các trường hợp, bạn nên sử dụng một khung công tác cho dịch vụ này như Dịch vụ khai báo OSGi (DS), Kế hoạch chi tiết OSGi hoặc khung công tác khác. Trong hầu hết các trường hợp, các khung công tác này hoạt động thông qua việc tiêm và xử lý tính năng động của Registry Service OSGi cho bạn. Để biết thông tin về DS hoặc Kế hoạch chi tiết, hãy xem OSGi 4.2 Enterprise Specification.
Nguồn
2011-10-13 07:49:37
Tôi chưa bao giờ nghe nói về việc triển khai lại thành công trong sản xuất trên máy chủ ứng dụng JEE (có tất cả họ đều yêu cầu bạn có thể làm điều đó, nhưng các lib bị hành vi xấu luôn chặn các trình nạp lớp cũ bị thu gom rác). http://stackoverflow.com/questions/5788862/how-do-you-update-your-java-ee-app-in-production/5887360 – earcam