What is a common pitfall when updating mutable objects stored as session attributes?

4 phương ánCó giải thích

Các phương án trả lời

Chọn một phương án
Lời giảiChọn phương án để mở
Đáp án đúng: "The container may not detect the change if you don't re-set the attribute.". Khi lưu một đối tượng khả biến vào phiên rồi sửa trực tiếp trường bên trong nó, container không nhận được tín hiệu nào: nó chỉ biết có thay đổi tại lời gọi setAttribute, và chính lời gọi đó mới kích hoạt bộ lắng nghe thuộc tính cùng cơ chế nhân bản phiên giữa các node trong cụm. Vì thế quy ước an toàn là sửa xong thì đặt lại thuộc tính với cùng khoá. Lựa chọn "You must always remove the session attribute before updating its contents." dựng ra một bước bắt buộc không có thật: gọi setAttribute đè lên là đủ, xoá rồi thêm lại chỉ thêm khoảng trống dễ sinh lỗi. Lựa chọn "Session attributes must be immutable." quá mạnh: yêu cầu thực tế chỉ là đối tượng khả tuần tự hoá khi phiên cần ghi ra ngoài, chứ không cấm đối tượng khả biến. Lựa chọn "Updates are always automatically replicated." nói ngược chính cái bẫy, vì việc nhân bản không tự xảy ra sau một thay đổi tại chỗ.

Cùng phần 6

Xuất hiện trong 2 bộ đề