Tôi đang sử dụng Spring và JSF 2 để tạo một ứng dụng web. Các đối tượng kinh doanh được lưu giữ trong các thùng chứa mùa xuân, và tôi tiêm chúng vào Đậu Managed sử dụng @ManagedProperty, như thế này:Làm thế nào để tái tiêm một @ManagedProperty thoáng qua tại deserializing?
@ManagedBean
@ViewScoped
public class SomeMB implements Serializable {
private static final long serialVersionUID = 1L;
@Getter @Setter
@ManagedProperty("#{someService}")
private SomeService someService;
// ...
Vấn đề là, tôi tiếp tục nhận được một NotSerializableException
cho một lớp học từ mùa xuân (ServiceLocatorFactoryBean) đang được sử dụng bởi Đậu nành SomeService.
Nếu tôi làm cho nó transient
, làm thế nào tôi có thể thực hiện việc tiêm lại nó sau khi deserializing?
Hoặc, cách nào khác để giải quyết vấn đề này?
Tôi đã đọc một số câu hỏi khác tương tự ở đây, nhưng không thể tìm thấy bất kỳ câu hỏi nào được giải quyết chính xác với sự cố này.
FYI: vấn đề này không tồn tại khi bạn chỉ sử dụng EJB riêng của Java EE thay vì Spring. – BalusC
@BalusC Vâng, tôi đọc về điều đó trong các câu hỏi khác, không may là tôi không biết đủ về EJB để sử dụng nó (và tôi không biết liệu tôi có thể thuyết phục các đồng nghiệp để tôi thử nó trong dự án này) . Bạn có thể chỉ cho tôi một nguồn tài nguyên tốt để tìm hiểu về nó, btw? – elias
Nó không phải là khó khăn. Chỉ cần chắc chắn rằng container của bạn hỗ trợ EJB (Glassfish, JBoss, Weblogic, v.v.). Lớp dịch vụ chú thích với '@ Stateless' hoặc' @ Stateful' và chèn nó bằng '@ EJB'. Đó là nó. Không có getter/setter yêu cầu btw. – BalusC