Hiện tại, chúng tôi có một ứng dụng web tải ngữ cảnh ứng dụng Spring để khởi tạo một chồng đối tượng nghiệp vụ, đối tượng DAO và Hibernate. Chúng tôi muốn chia sẻ ngăn xếp này với một ứng dụng web khác, để tránh có nhiều phiên bản của cùng một đối tượng.Cách tốt nhất để chia sẻ các cá thể đối tượng nghiệp vụ giữa các ứng dụng web Java bằng JBoss và Spring là gì?
Chúng tôi đã xem xét một số cách tiếp cận; phơi bày các đối tượng bằng JMX hoặc JNDI hoặc sử dụng EJB3.
Các phương pháp khác nhau đều có vấn đề của chúng và chúng tôi đang tìm kiếm một phương pháp nhẹ.
Bất kỳ đề xuất nào về cách giải quyết vấn đề này?
Chỉnh sửa: Tôi đã nhận được ý kiến yêu cầu tôi để xây dựng một chút, vì vậy ở đây đi:
Vấn đề chính chúng ta muốn giải quyết là chúng ta muốn chỉ có một thể hiện của Hibernate. Điều này là do các vấn đề với việc vô hiệu hóa bộ nhớ cache cấp 2 của Hibernate khi chạy một số ứng dụng khách làm việc với cùng một nguồn dữ liệu. Ngoài ra, các doanh nghiệp/DAO/Hibernate stack đang phát triển khá lớn, do đó, không nhân đôi nó chỉ có ý nghĩa hơn.
Trước tiên, chúng tôi đã cố gắng xem xét cách mà lớp doanh nghiệp có thể được tiếp xúc với các ứng dụng web khác và Spring cung cấp gói JMX với mức giá của một lượng nhỏ XML. Tuy nhiên, chúng tôi không thể liên kết các thực thể JMX với cây JNDI, vì vậy chúng tôi không thể tìm kiếm các đối tượng từ các ứng dụng web.
Sau đó, chúng tôi đã thử ràng buộc lớp kinh doanh trực tiếp với JNDI. Mặc dù Spring đã không đưa ra bất kỳ phương pháp nào cho việc này, nhưng việc sử dụng JNDITemplate để ràng buộc chúng cũng không đáng kể. Nhưng điều này dẫn đến một số vấn đề mới: 1) Trình quản lý bảo mật từ chối truy cập vào trình nạp lớp RMI, vì vậy máy khách không thành công khi chúng tôi cố gắng gọi các phương thức trên tài nguyên JNDI. 2) Một khi các vấn đề an ninh đã được giải quyết, JBoss đã ném IllegalArgumentException: đối tượng không phải là một thể hiện khai báo lớp. Một chút đọc cho thấy rằng chúng ta cần triển khai sơ khai cho các tài nguyên JNDI, nhưng điều này có vẻ như rất nhiều rắc rối (có lẽ mùa xuân có thể giúp chúng ta?)
Chúng ta chưa nhìn quá nhiều vào EJB, nhưng sau lần đầu tiên hai lần thử tôi tự hỏi liệu những gì chúng tôi đang cố gắng đạt được là hoàn toàn có thể.
Để tóm tắt những gì chúng tôi đang cố gắng đạt được: Một ví dụ JBoss, một số ứng dụng web sử dụng một chồng đối tượng kinh doanh trên lớp DAO và Hibernate.
Trân trọng,
Nils
Bạn có thể nhận xét về 1. Bạn đang cố giải quyết vấn đề gì; 2. Các vấn đề bạn tìm thấy với các phương pháp tương ứng mà bạn đề cập đến. Điều này sẽ cho phép một câu trả lời tập trung hơn ... – johnstok
Thật khó để nói tất cả trong 300 ký tự, vì vậy tôi đã chỉnh sửa câu hỏi để thêm chi tiết :-) –