- Tomcat tạo trình nạp lớp mới cho từng ứng dụng web.
- Vì vậy, nếu lớp Singleton của bạn được lưu trữ trong tập tin chiến tranh, cùng một tập tin chiến tranh sẽ có hai trường hợp trong Tomcat container tức là nó tạo ra hai lớp Singleton riêng biệt cho mỗi tập tin chiến tranh.
- Nếu lớp Singleton nằm trong đường dẫn thư viện chia sẻ của Tomcat, Tomcat chỉ tạo một cá thể Singleton cho cả hai ứng dụng.
JVM tương tự:
JVM là như biệt thự lớn. Nó chứa các gia đình kết hợp với ứng dụng và thư viện máy chủ.
Trình nạp lớp là thành viên gia đình, mỗi thành viên gia đình đại diện cho một ClassLoader (hoạt động như phân cấp đại biểu không phân cấp cấp tính). Lưu ý: ClassLoader là lớp, nó có thể tạo nhiều cá thể.
Ứng dụng giống như thiết bị. ví dụ: Máy giặt, Tủ lạnh, Máy làm mát, Máy ảnh, Bàn ăn, Ghế sofa và các vật ...
Mỗi thư viện đều có thư viện riêng. Mỗi tìm kiếm trong tự do của cha mẹ nếu không tìm thấy sau đó tìm kiếm trong thư viện của riêng mình.
giới hạn: Nếu cha mua thiết bị, con họ có thể sử dụng thiết bị, nhưng không thể được cha mẹ và người anh em sử dụng. Mỗi ứng dụng có thể sử dụng các phiên bản khác nhau của cùng một thư viện. ví dụ: Nếu thư viện chứa hai hoặc nhiều phiên bản của cùng một cuốn sách, nó sẽ chọn bất kỳ cuốn sách nào có sẵn trước tiên.
Mỗi số gia đình chỉ có thể sử dụng một thiết bị duy nhất.
Ở nhà, chúng tôi có thể sử dụng thiết bị lộng lẫy cùng phiên bản. Vì vậy, JVM cho phép chúng tôi chạy nhiều ứng dụng của cùng một phiên bản.
Bộ sưu tập rác là một người phục vụ trong Mansion, người đi lang thang như một daemon, người có thể xóa bất kỳ loại đối tượng nào.
Phạm vi của biến tĩnh được giới hạn một lần cho mỗi ClassLoader.
@Evgenniy, Điều này có nghĩa là trong ứng dụng đơn của tôi, tôi có thể tạo 2 đối tượng đơn lẻ bằng cách sử dụng các trình nạp lớp khác nhau (Chỉ là một ý nghĩ). ?? – Learner
Có, tạo 2 trình nạp lớp (bạn có thể sử dụng URLClassLoader), nạp cùng một lớp với ClassLoader.loadClass (className) - bạn sẽ nhận được 2 phiên bản Class khác nhau –
Điều đó có nghĩa là Singleton bị hỏng? – Learner