Servlet 容器何时会中断我的线程?

2024-01-10

我正在编写一个servlet,它在Java servlet 容器(例如JBoss、Jetty、Tomcat、GlassFish)中执行。

servlet 容器中断运行我的 HTTP 请求处理程序的线程的原因是什么?只有在关闭时才会这样做吗?当客户没有响应时它会这样做吗?

它是标准化的,还是任何容器都可以自由地做他想做的事?

为了澄清,我不是在谈论中断我创建的新线程,而是在我的请求正在运行的 servlet 容器的线程上。 (尽管如果您在答案中提到新线程会发生什么,那会很有趣)。


servlet 容器中断运行我的 HTTP 请求处理程序的线程的原因是什么?

这取决于容器本身。 servlet 规范中确实没有标准化。

只有在关闭时才会这样做吗?

似乎是最明显的原因之一。本地测试告诉我,至少 Tomcat 7.0.22 和 Glassfish 3.1.1 会立即中止所有 servlet 的处理,而不让它们继续执行任务。此时不会抛出任何异常。

当客户没有响应时它会这样做吗?

仅当请求标头未完全到达时。套接字连接有特定于容器的超时,通常为 60 秒。但是如果请求标头没有完全到达,那么您的 servlet 方法无论如何都不会被输入。只有当请求标头完全到达时,才会进入您的 servlet 方法。

然后,在servlet方法内部;如果客户端提供了请求正文(例如 POST)并且您的 servlet 代码开始读取请求正文,例如request.getParameter() or request.getInputStream(),然后它会抛出IOException当客户端此时中止发送请求正文时。另一方面,当您写入响应(并刷新/提交它)时,也会有一个IOException当客户端此时中止连接时将抛出该异常。如有必要,您可以将其放入try-catch,但除了记录之外你不能用它做任何其他事情。这些日志记录的有用性非常值得怀疑,并且可能只会使您的服务器日志变得混乱。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Servlet 容器何时会中断我的线程? 的相关文章

  • 如何将本机库链接到 IntelliJ 中的 jar?

    我正在尝试在 IntelliJ 中设置 OpenCV 但是我一直在弄清楚如何告诉 IntelliJ 在哪里可以找到本机库位置 在 Eclipse 中 添加 jar 后 您可以在 Build Config 屏幕中设置 Native 库的位置
  • 日期语句之间的 JPQL SELECT [关闭]

    Closed 这个问题是无法重现或由拼写错误引起 help closed questions 目前不接受答案 我想将此 SQL 语句转换为等效的 JPQL SELECT FROM events WHERE events date BETWE
  • Spring应用中Eureka健康检查的问题

    我正在开发一个基于 Spring 的应用程序 其中包含多个微服务 我的一个微服务充当尤里卡服务器 到目前为止一切正常 在我所有其他微服务中 用 EnableEurekaClient 我想启用这样的健康检查 应用程序 yml eureka c
  • Java 枚举与创建位掩码和检查权限的混淆

    我想将此 c 权限模块移植到 java 但是当我无法将数值保存在数据库中然后将其转换为枚举表示形式时 我很困惑如何执行此操作 在 C 中 我创建一个如下所示的枚举 public enum ArticlePermission CanRead
  • 如何循环遍历所有组合,例如48 选择 5 [重复]

    这个问题在这里已经有答案了 可能的重复 如何在java中从大小为n的集合中迭代生成k个元素子集 https stackoverflow com questions 4504974 how to iteratively generate k
  • 如何使用assertEquals 和 Epsilon 在 JUnit 中断言两个双精度数?

    不推荐使用双打的assertEquals 我发现应该使用带有Epsilon的形式 这是因为双打不可能100 严格 但无论如何我需要比较两个双打 预期结果和实际结果 但我不知道该怎么做 目前我的测试如下 Test public void te
  • 过滤两次 Lambda Java

    我有一个清单如下 1 2 3 4 5 6 7 和 预期结果必须是 1 2 3 4 5 6 7 我知道怎么做才能到7点 我的结果 1 2 3 4 5 6 我也想知道如何输入 7 我添加了i gt i objList size 1到我的过滤器
  • jqgrid删除:没有获取值

    我使用 JSP 和 Servlet IDE Eclipse 数据库 Oracle10 开发 Web 应用程序 我在用JQGRID以表格格式显示数据 我还想要添加 编辑 删除的功能JQGRID 到目前为止我已经完成了编辑功能 现在我想要Del
  • Pig Udf 显示结果

    我是 Pig 的新手 我用 Java 编写了一个 udf 并且包含了一个 System out println 其中的声明 我必须知道在 Pig 中运行时该语句在哪里打印 假设你的UDF 扩展了 EvalFunc 您可以使用从返回的 Log
  • 如何在 Spring 中禁用使用 @Component 注释创建 bean?

    我的项目中有一些用于重构逻辑的通用接口 它看起来大约是这样的 public interface RefactorAwareEntryPoint default boolean doRefactor if EventLogService wa
  • 谷歌应用程序引擎会话

    什么是java应用程序引擎 默认会话超时 如果我们将会话超时设置为非常非常长的时间 会不会产生不良影响 因为谷歌应用程序引擎会话默认情况下仅存储在数据存储中 就像facebook一样 每次访问该页面时 会话仍然永远存在 默认会话超时设置为
  • 检测并缩短字符串中的所有网址

    假设我有一条字符串消息 您应该将 file zip 上传到http google com extremelylonglink zip http google com extremelylonglink zip not https stack
  • 在 junit 测试中获取 javax.lang.model.element.Element 类

    我想测试我的实用程序类 ElementUtils 但我不知道如何将类作为元素获取 在 AnnotationProcessors 中 我使用以下代码获取元素 Set
  • jdbc mysql loginTimeout 不起作用

    有人可以解释一下为什么下面的程序在 3 秒后超时 因为我将其设置为在 3 秒后超时 12秒 我特意关闭了mysql服务器来测试mysql服务器无法访问的这种场景 import java sql Connection import java
  • Java ResultSet 如何检查是否有结果

    结果集 http java sun com j2se 1 4 2 docs api java sql ResultSet html没有 hasNext 方法 我想检查 resultSet 是否有任何值 这是正确的方法吗 if resultS
  • 在我的 Spring Boot 示例中无法打开版本 3 中的 Swagger UI

    我在 Spring Boot 示例中打开 swagger ui 时遇到问题 当我访问 localhost 8080 swagger ui 或 localhost 8080 root api name swagger ui 时出现这种错误 S
  • 如何使用 jUnit 将测试用例添加到套件中?

    我有 2 个测试类 都扩展了TestCase 每个类都包含一堆针对我的程序运行的单独测试 如何将这两个类 以及它们拥有的所有测试 作为同一套件的一部分执行 我正在使用 jUnit 4 8 在 jUnit4 中你有这样的东西 RunWith
  • 我如何在java中读取二进制数据文件

    因此 我正在为学校做一个项目 我需要读取二进制数据文件并使用它来生成角色的统计数据 例如力量和智慧 它的设置是让前 8 位组成一个统计数据 我想知道执行此操作的实际语法是什么 是不是就像读文本文件一样 这样 File file new Fi
  • Opencv Java 灰度

    我编写了以下程序 尝试从彩色转换为灰度 Mat newImage Imgcodecs imread q1 jpg Mat image new Mat new Size newImage cols newImage rows CvType C
  • 如何使用mockito模拟构建器

    我有一个建造者 class Builder private String name private String address public Builder setName String name this name name retur

随机推荐

  • 在 Android 上的游戏中购买时 Soomla IAB 错误

    我使用 unity 3d 制作了一个简单的游戏 只是为了测试 Google 服务 对于 Google Play 游戏服务 我使用 googleplayplugin 对于 iab 使用 soomla 插件 我认为所有配置都正确 我在我的 ne
  • LocationManager 正在服务 - 如果 1 分钟内没有修复则需要停止

    我有定期服务 每 5 分钟开始使用一次警报 服务实现 LocationListener 以获取 GPS 定位并将其保存到 SqLite 数据库中 我给服务人员 1 分钟的时间来尽可能获得最佳修复 如果在此之前我的准确率 一切都很好 我还有代
  • 如何在Python中使用密码加密文本?

    令人惊讶的是 在谷歌上很难找到这个问题的直接答案 我想从用户那里收集一段文本和一条消息 例如1PWP7a6xgoYx81VZocrDr5okEEcnqKkyDc hello world 然后我希望能够以某种方式加密 解密带有文本的消息 以便
  • SQL Server 2008 R2 地理距离?

    我创建了一个包含以下列的表 Text varchar 255 Location geography 它们包含荷兰的一些城市作为数据 从谷歌地图获取坐标 Rotterdam POINT 51 925637 4 493408 4326 Utre
  • SVN最佳实践-删除已完成的分支

    完成 重新集成分支后 最佳做法是删除该分支 以便您的头分支文件夹仅显示当前分支吗 如果是这样 什么时候删除重新整合的分支合适 次要版本发布后 这是我们标记的时间 Cheers 根据this https stackoverflow com q
  • 尝试安装 python 时出现错误

    我已经下载了 python 3 6 1 tar xz 然后我提取了它 有一个文件 README rst 这是说明文件 并有如何安装的说明 在 Unix Linux BSD macOS 和 Cygwin 上 configure make ma
  • k-最大双重选择

    想象一下你有两个麻袋 A and B with N and M球分别在其中 每个球都有一个已知的数值 利润 系统会要求您提取 有替换 总利润最大的一对球 由所选球的乘法给出 最佳提取是显而易见的 从其中选择最有价值的球A以及来自B 当你被要
  • 如何使用BluetoothHeadset API获取蓝牙连接的设备

    我想获取蓝牙连接设备的列表 而不仅仅是配对的设备 I found BluetoothHeadset API in API 级别 11它提供了方法getConnectedDevices 获取已连接的蓝牙设备的列表 如何使用此 API 获取蓝牙
  • 对多于一列进行过滤

    我有一个可以从一列中过滤的表格 handleSearch function oEvent var sValue oEvent getParameter value var oFilter new sap ui model Filter RA
  • jqGrid ColumnChooser 有完整的工作示例吗? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 At http www trirand com jqgridwiki doku php id wiki jquery ui methods
  • 单元测试有哪些流行的命名约定? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • Android webview 得到 sslError SSL_UNTRUSTED 但证书有效

    我已经实施了onReceivedSslError我的 WebViewClient 中的方法来正确处理 webview 中无效的 https 证书 Override public void onReceivedSslError WebView
  • 在 Quartz.net 中处理 JobExecutionException

    可能是一个愚蠢的问题 但无论如何 我已经设置了quartz 并且可以安排作业 并且我可以确认作业 实现 IJob 接口 正在运行 查看网站上的文档 教程的第 3 课 允许您从执行方法抛出的唯一异常类型是JobExecutionExcepti
  • 在 C# 中使用反射将 func 转换为谓词

    我基本上想做this https stackoverflow com questions 731249 how to convert funct bool to predicatet 但我不知道 T 是什么 所以我使用反射树和表达式树来构建
  • Retrofit:如何发送带有常量字段的 POST 请求?

    我想发送一个带有一个实际参数的简单 POST 请求 POST token FormUrlEncoded void extendSession Field refresh token final String refreshToken 但是这
  • Node js puppeteer 元数据

    我是 Puppeteer 的新手 我正在尝试使用 Node JS 和 Puppeteer 从网站中提取元数据 我似乎无法正确理解语法 下面的代码可以完美地使用两种不同的方法提取标题标签以及段落标签中的文本 例如 如何提取名称为 descri
  • 无法获取查询字符串:路径名已填充,但搜索为空

    我正在使用 React Router Redux Redux saga 我访问作为 props 传递给我的组件的位置对象 在其中我尝试获取 URL 的查询字符串部分 然而 位置的搜索参数始终为空 尽管如此 路径名仍按如下方式填充 pathn
  • 仅选择字符串中的前几个字符 C++

    我想使用 C 选择字符串的前 8 个字符 现在我创建一个 8 个字符长的临时字符串 并用另一个字符串的前 8 个字符填充它 但是 如果另一个字符串的长度不是 8 个字符 则会留下不需要的空格 string message const cha
  • 如何有条件地从数据框中删除行

    我有以下数据框 id lt c 1 1 1 1 2 2 2 2 3 3 3 3 time lt c 0 1 2 3 0 1 2 3 0 1 2 3 value lt c 1 1 6 1 2 6 2 2 1 1 6 1 d lt data f
  • Servlet 容器何时会中断我的线程?

    我正在编写一个servlet 它在Java servlet 容器 例如JBoss Jetty Tomcat GlassFish 中执行 servlet 容器中断运行我的 HTTP 请求处理程序的线程的原因是什么 只有在关闭时才会这样做吗 当