JSF là một công nghệ hữu ích, nhưng bạn chắc chắn có thể tự treo mình với nó. Có vẻ như, bạn đang tăng kích thước của trạng thái xem (bằng cách đặt giá trị lớn trên các thành phần) hoặc bạn đang rò rỉ tham chiếu đến các thành phần vào trạng thái phiên khác (điều này sẽ là xấu). Một thủ phạm tiềm năng khác sẽ là một cái nhìn quá lớn (tôi đã thấy sự dễ dàng mà mọi người có thể xây dựng cây UI dẫn đến đồ thị điều khiển rất lớn với các bảng dữ liệu ở khắp mọi nơi). Tôi biết rằng IBM cung cấp các điều khiển văn bản và bảng tính phong phú - Tôi không thể nhận xét về ảnh hưởng của việc sử dụng những thứ này lên kích thước của tiểu bang.
Quả treo thấp là kiểm tra các hạt được quản lý được định cấu hình cho phạm vi phiên trong faces-config.xml.
JSF tiết kiệm hai điều giữa các yêu cầu:
- quan điểm (tất cả các điều khiển trên trang)
- bang view (trạng thái các nút điều khiển)
Những được tách ra vì một số điều khiển, chẳng hạn như con của bảng dữ liệu, có thể có nhiều trạng thái (một cho mỗi hàng). Nhà nước có thể được lưu vào một trường ẩn trên biểu mẫu (trong đó, nếu không được mã hóa, có thể là một mối nguy hiểm bảo mật lớn) hoặc trong phiên. Để chứa nhiều cửa sổ trình duyệt chia sẻ cùng một phiên (và, trong một số triển khai, hỗ trợ nút quay lại), nhiều chế độ xem được lưu trữ.
- Sẽ có tùy chọn cấu hình để đặt số lượt xem mà ứng dụng sẽ giữ trong phiên cho một người dùng cụ thể tại bất kỳ thời điểm đã định nào.
- Bạn có thể đo kích thước của trạng thái xem bằng cách cung cấp StateManager đo kích thước của chế độ xem/trạng thái đã lưu (định cấu hình Trình quản lý trạng thái trong cấu hình khuôn mặt.xml với một hàm tạo công khai có một Trình quản lý trạng thái - xem JSF spec các tệp PDF để biết thêm chi tiết; nhà nước là serializable và bạn có thể kiểm tra kích thước của nó bằng cách bán nó vào một dòng).
Hầu hết các ứng dụng JSF do IDE tạo đều có hạt sao lưu. Nó sẽ có thể, thông qua phạm vi đậu phiên để giữ trạng thái lâu hơn bạn muốn, đặt một căng thẳng trên phiên. Vì có xu hướng là một bean sao lưu cho mỗi trang, bạn càng có nhiều trang, vấn đề càng lớn. Kiểm tra faces-config.xml của bạn để xem đây có phải là một vấn đề tiềm ẩn không.
Một điều khác bạn có thể làm là định cấu hình HttpSessionAttributeListener trong web.xml. Bạn có thể nhận được stack trace để giúp xác định các khu vực có vấn đề trong ứng dụng của mình.
chỉ là ý kiến cá nhân, nhưng tôi nghĩ lỗ hổng này nằm ở IBM và cũng là việc triển khai JSF của họ. Tôi không thể biện minh cho cảm giác của mình :) – guyumu
Cái mà tôi thấy không sử dụng Sun JVM và triển khai Apache JSF. Apache là rất nhiều IBM, vì vậy tôi không thể nói làm thế nào hai là khác nhau. Tôi nghĩ đó là mô hình JSF - nó có vẻ rất nặng nề với tôi. – duffymo