大多数服务器端 J2EE 应用程序中有六种常用的范围类型:
- Transaction(事务)
- Request(请求)
- HTTP session(HTTP 会话)
- Application(应用程序)
- Global(全局)
- None(无)
事务范围覆盖一个事务的整个生命周期。这个范围开始于一个事务的开始。这时会创建一个惟一的范围键。这个范围结束于提交或回滚事务时。这时,与事务范围相关联的所有对象被自动释放回它们的池。
请求范围
请求范围与一个 servlet 请求的范围对应;在容器调用 servlet 来处理请求之后,请求范围立即开始。同时会创建一个惟一的范围键。在 servlet 完成处理之前请求范围结束。这时,与这个范围相关联的所有对象被自动释放回它们的池。
HTTP 会话范围
HTTP 会话范围与一个 HTTP 会话的生命周期对应。它从创建一个新的
HttpSession
时开始。这时会创建一个惟一的范围键。它结束于会话被销毁或过期时。这时,与这个范围相关联的所有对象被自动释放回它们的池。
应用程序范围
应用程序范围覆盖应用程序的整个生命周期。它开始于把一个应用程序部署到应用服务器时。这时会创建一个惟一的范围键。这个范围结束于应用程序停止运行或从应用服务器中删除时。这时,与这个范围相关联的所有对象被自动释放回它们的池。
全局范围
全局范围是最大的范围。采用这种范围的对象不会被释放。
无范围
无范围用于不使用对象池的对象。采用这种范围的对象每次都通过自己的对象构造函数来创建,并由 Java 垃圾收集器释放。对象管理器根本不管理它们。
转载于:https://blog.51cto.com/danni505/243244