重载注意事项


重载注意事项

尽管 Container Provider (容器供应商)不需要实现类的重加载模式以便易于开发,但是任何此类的实现必须确保所有 servlet 及它们使用的类(Servlet使用的系统类异常可能使用的是一个不同的 class loader)在一个单独的 class loader 范围内被加载。为了保证应用像开发人员预期的那样工作,该要求是必须的。作为一个开发辅助,容器应支持到会话绑定到的监听器的完整通知语义以用于当 class 重加载时会话终结的监控。

之前几代的容器创建新的 class loader 来加载 servlet,且与用于加载在 servlet 上下文中使用的其他 servlet 或类的 class loader 是完全不同的。这可能导致 servlet 上下文中的对象引用指向意想不到的类或对象,并引起意想不到的行为。为了防止因创建新的 class loader 所引起的问题,该要求是必须的。

临时工作目录

每一个 servlet 上下文都需要一个临时的存储目录。servlet 容器必须为每一个 servlet 上下文提供一个私有的临时目录,并将通过javax.servlet.context.tempdir 上下文属性使其可用,关联该属性的对象必须是 java.io.File 类型。

该要求公认为在多个 servlet 引擎实现中提供一个通用的便利。当 servlet 容器重启时,它不需要去保持临时目录中的内容,但必须确保一个 servlet 上下文的临时目录中的内容对运行在同一个 servlet 容器的其他 Web 应用的上下文不可见。