1. Khái quát chung


2. Struts1


Framework chỉ sử dụng một thể hiện (instance) duy nhất của lớp đó, và thể hiện này được dùng để xử lý tất cả các yêu cầu gửi đến. Vì vậy, cần cẩn thận, không thực hiện những thao tác không an toàn khi có nhiều luồng (not thread-safe) bên trong lớp Action.
Theo tài liệu javadoc:
Các lớp Action phải được lập trình theo cách an toàn khi có nhiều luồng, bởi vì bộ điều khiển (controller) sẽ sử dụng chung một thể hiện của lớp để xử lý nhiều yêu cầu đồng thời. Điều này có nghĩa là bạn cần thiết kế chương trình với những điểm sau:
  1. KHÔNG ĐƯỢC sử dụng các biến instance (biến thuộc thể hiện) và biến static để lưu trữ thông tin liên quan đến trạng thái của một yêu cầu cụ thể. Tuy nhiên, CÓ THỂ sử dụng chúng để chia sẻ các tài nguyên dùng chung trên phạm vi toàn cục giữa nhiều yêu cầu đối với cùng một Action.
  2. Việc truy cập các tài nguyên khác (JavaBeans, biến session, v.v.) PHẢI được đồng bộ hóa nếu những tài nguyên đó cần được bảo vệ. (Tuy nhiên, nhìn chung, các lớp tài nguyên nên được thiết kế để tự bảo vệ chính chúng khi cần thiết..

Đây là nội dung được nêu trên trang chính thức của Apache Struts:
Các lớp Action trong Struts 1 là các singleton (chỉ có một thể hiện duy nhất) và phải bảo đảm an toàn khi có nhiều luồng, bởi vì chỉ có một thể hiện của lớp được sử dụng để xử lý tất cả các yêu cầu dành cho Action đó.

3. Struts2




Based on: