共享信息

Web組件,和大多數對象同樣,一般與其餘對象一塊兒完成他們的任務。Web組件實現共享經過下列步驟:java

  • 使用私有幫助對象(例如,JavaBeans組件)
  • 共享公共範圍的對象
  • 使用數據庫
  • 調用其餘web資源。Java Servlet 提供訪問其餘web資源的機制 Invoking Other Web Resources。

使用範圍對象

web組件使用4種範圍對象來共享信心。你能夠使用表明範圍對象的類的getAttribute 和setAttribute方法訪問他們的屬性。下面的列表列出了4種範圍對象:web

Web context

javax.servlet.ServletContext
web上下文的組件。查看 Accessing the Web Context章節。數據庫

Session

javax.servlet.http.HttpSession
處理附屬於session的相應的web組件。查看Maintaining Client State章節。服務器

Request

javax.servlet.ServletRequest類的子類。
處理請求的web組件。網絡

Page

javax.servlet.jsp.JspContext
jsp頁面建立的web組件。session

控制對共享資源的併發訪問

在一個多線程服務器,共享資源支持併發訪問。添加到範圍對象中屬性,在內存中共享數據,例如實例和變量,和一些擴展對象,如文件、數據庫鏈接、網絡鏈接等。
併發訪問發生在下列場景中:多線程

  • 多個web組件訪問存儲在web上下文中的對象
  • 多個web組件訪問村吃在session中的對象
  • 一個web組件多線程訪問實例變量。web容器一般給每個請求分配一個線程。這保證了一個Servlet實例在同一時間只能處理一個線程,一個Serlet能夠實現SingleThreadModel接口。若是一個Servlet實現了SingleThreadModel接口,將不會有2個線程在程序中併發執行。一個web容器經過同步訪問一個Servlet實例或維持一個web組件的實例池並分配到空閒實例中來保證這個實現。這個接口不會防止對web資源訪問的同步問題,例如一個靜態類變量或外部對象。

當資源能夠併發訪問,他們有一些共同的使用模式。你能夠使用章節 http://docs.oracle.com/javase/tutorial/essential/concurrency/中描述的同步策略來控制並預防多線程訪問問題。併發

相關文章
相關標籤/搜索