Tôi có một ứng dụng GWT có dịch vụ RPC trên back-end của nó. Tôi hiện đang cố gắng triển khai hỗ trợ người dùng và câu hỏi duy nhất vẫn còn là cách tôi nên lưu trữ dữ liệu phiên.Làm việc với các phiên trong GWT ứng dụng
Tôi đang lưu trữ id phiên sử dụng
getThreadLocalRequest().getSession().setAttribute("sid", "randomSIDgoeshere");
Vì vậy, câu hỏi đầu tiên là hơn Java servlets hơn để GWT. Liệu đảm bảo mã này rằng thời gian tới tôi thực hiện cuộc gọi như thế này:
getThreadLocalRequest().getSession().getAttribute("sid");
Nó sẽ thể là null (trong trường hợp nó được gọi là cho người sử dụng mà chưa đến thăm mảnh mã nơi SID thuộc tính được thiết lập) hoặc chính xác SID tôi đã lưu cho người dùng đó. Nói cách khác, có phải 2 đoạn mã người dùng cụ thể không? (bởi người dùng Tôi có nghĩa là một trình duyệt duy nhất trên một máy tính)
Câu hỏi thứ hai là lưu trữ ánh xạ giữa SID và một số dữ liệu bổ sung như id người dùng. Trong trường hợp tôi có một mã như thế này:
public class MyGwtServiceImpl extends RemoteServiceServlet implements MyGwtService {
// SID to User ID mappings
private final Map<String, String> sessions =
new HashMap<String, String>();
...
}
Có đảm bảo rằng sessions
luôn là đối tượng tương tự cho tất cả các yêu cầu và dữ liệu của nó sẽ vẫn "sống" trừ khi toàn bộ ứng dụng được chấm dứt? (Tomcat là dừng lại ví dụ) Có phải là cách tiếp cận bình thường hoặc tôi nên kiên trì tất cả các ánh xạ trên DB của tôi?
Cảm ơn, câu trả lời thực sự tuyệt vời! – agibalov