共享信息

9次阅读

共计 991 个字符,预计需要花费 3 分钟才能阅读完成。

Web 组件,和大多数对象一样,通常与其他对象一起完成他们的任务。Web 组件实现共享通过下列步骤:

使用私有帮助对象(例如,JavaBeans 组件)
共享公共范围的对象
使用数据库
调用其他 web 资源。Java Servlet 提供访问其他 web 资源的机制 Invoking Other Web Resources。

使用范围对象
web 组件使用 4 种范围对象来共享信心。你可以使用代表范围对象的类的 getAttribute 和 setAttribute 方法访问他们的属性。下面的列表列出了 4 种范围对象:
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 组件。
控制对共享资源的并发访问
在一个多线程服务器,共享资源支持并发访问。添加到范围对象中属性,在内存中共享数据,例如实例和变量,和一些扩展对象,如文件、数据库连接、网络连接等。并发访问发生在下列场景中:

多个 web 组件访问存储在 web 上下文中的对象
多个 web 组件访问村吃在 session 中的对象
一个 web 组件多线程访问实例变量。web 容器通常给每一个请求分配一个线程。这保证了一个 Servlet 实例在同一时间只能处理一个线程,一个 Serlet 可以实现 SingleThreadModel 接口。如果一个 Servlet 实现了 SingleThreadModel 接口,将不会有 2 个线程在程序中并发执行。一个 web 容器通过同步访问一个 Servlet 实例或维持一个 web 组件的实例池并分配到空闲实例中来保证这个实现。这个接口不会防止对 web 资源访问的同步问题,例如一个静态类变量或外部对象。

当资源可以并发访问,他们有一些共同的使用模式。你可以使用章节 http://docs.oracle.com/javase/tutorial/essential/concurrency/ 中描述的同步策略来控制并预防多线程访问问题。

正文完
 0