通過注解或servlet宣告都能控制 servlet 容器如何提供 servlet 實體,
對于非分布式(默認)的 servlet,servlet 容器對于每個 Servlet 宣告必須且只能產生一個實體,
但若 Servlet 實作了 SingleThreadModel 介面,servlet 容器可選擇實體化多個實體以便:
- 處理高負荷請求
- 或串行化請求到一個特定實體
若 servlet 部署分布式環境,容器可為每個JVM的每個 Servlet 宣告產生一個實體,但若在分布式環境中 servlet 實作了 SingleThreadModel 介面,此時容器可以為每個容器的 JVM 實體化多個 Servlet 實體,
Single Thread Model
SingleThreadModel 介面的作用是保證一個特定 servlet 實體的service方法在一個時刻僅能被一個執行緒執行,注意,此保證僅適于每個 servlet 實體,因為容器可以選擇池化這些物件,
有些物件可以在同一時刻被多個 servlet 實體訪問,如 HttpSession 實體,可以在一個特定的時間對多個 Servlet 可用,包括那些實作了 SingleThreadModel 介面的 Servlet,
參考
- https://download.oracle.com/otndocs/jcp/servlet-3_1-fr-spec/index.html
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/342120.html
標籤:其他
