Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/391.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 单线程是否保证执行Servlet及其过滤器?_Java_Jakarta Ee_Tomcat_Servlets_Servlet Filters - Fatal编程技术网

Java 单线程是否保证执行Servlet及其过滤器?

Java 单线程是否保证执行Servlet及其过滤器?,java,jakarta-ee,tomcat,servlets,servlet-filters,Java,Jakarta Ee,Tomcat,Servlets,Servlet Filters,我已经知道大多数实现都使用单线程,但是规范中是否有暗示单线程的内容?我记得读过关于使用JVM集群的分布式应用服务器的文章。有这样的实现吗?或者有任何这样的实现可能吗?规范对这种分布式实现意味着什么,这种实现能保证单线程吗?相关的servlet规范3.0片段: 6.2.3过滤环境 过滤器和过滤器链末端的目标servlet或资源必须在同一调用线程中执行 还有太多的框架依赖于其中一个过滤器中设置的ThreadLocal。如果不同的线程运行过滤器和其他调用servlet的线程(技术上可能),它们都会被破

我已经知道大多数实现都使用单线程,但是规范中是否有暗示单线程的内容?我记得读过关于使用JVM集群的分布式应用服务器的文章。有这样的实现吗?或者有任何这样的实现可能吗?规范对这种分布式实现意味着什么,这种实现能保证单线程吗?

相关的servlet规范3.0片段:

6.2.3过滤环境 过滤器和过滤器链末端的目标servlet或资源必须在同一调用线程中执行

还有太多的框架依赖于其中一个过滤器中设置的
ThreadLocal
。如果不同的线程运行过滤器和其他调用servlet的线程(技术上可能),它们都会被破坏


请注意,分发仅适用于单独的请求,即集群中的不同服务器处理不同的请求。我从来没有听说过将单个请求拆分为机器。

接下来的问题是:
request.setAttribute(…)
是否值得用于通用编程(而不是JSP),以支持ThreadLocal?(这是假设在每次请求后都正确清理了threadlocals。)threadlocals的类型安全性似乎使它们比类型不安全的请求属性更适合。此外,性能更好,因为您不需要处理字符串键、哈希和映射。