内容

目录

在报告错误之前

Apache Tomcat 社区由使用 Apache Tomcat、帮助回答讨论列表上的问题、贡献文档和补丁的人员以及开发和维护 Apache Tomcat 代码的人员组成。几乎所有每天协助解决错误报告的人都会出于各种各样的原因这样做,而且几乎所有人都是在自己的时间里这样做的。

许多报告的错误最终并不是 Apache Tomcat 代码中的错误,而是由于配置错误、安装的应用程序、操作系统等引起的问题。

在报告错误之前,请尽一切努力自行解决问题。

如果您需要帮助,请在用户 邮件列表上询问。

本文档的其余部分将向您提供可用于解决您遇到的问题的资源。

Bugzilla 不是支持论坛

Bugzilla 是一个跟踪错误报告和功能请求的工具。它用于组织Apache Tomcat 项目的工作,以便不会忘记此类问题并记录它们的解决方式。

Bugzilla不是一个询问如何配置您自己的系统或如何解释某些您不理解的错误消息或行为的地方。如果您有疑问,请在用户 邮件列表中提问。

当您收集了足够的信息来诊断您的问题,并且它确实是一个可以在 Apache Tomcat 中修复的错误时,请随意创建或重新打开您的 Bugzilla 问题。您可以在邮件列表档案中找到讨论的链接 ,并将其包含在错误报告中。

帮助解决 Apache Tomcat 问题的资源

您可以使用以下一些资源来帮助您在报告错误之前解决遇到的问题。

问题排查

  • 文档– 查看您正在使用的 Apache Tomcat 版本的文档。您所面临的问题可能已在文档中得到解决。请注意,该文档是可搜索的。
  • 日志– Apache Tomcat 生成的日志在尝试诊断问题时可能是宝贵的资源。请查看它们。您可能需要在 Apache Tomcat 配置中启用调试输出,以便获得更多信息来帮助诊断问题。您可能需要配置访问日志(一个阀门)来记录哪些请求到达 Tomcat 以及 Tomcat 对它们的响应是什么。
  • 维基- 搜索 维基。这是每个人都可以贡献的非官方文档。
  • 常见问题解答– 搜索 Wiki 中的 Tomcat 常见问题解答。

Apache Tomcat 讨论列表

您很可能不是第一个遇到问题的人。其他人可能已经找到了解决方案。邮件列表档案可能包含有助于您解决问题的讨论。

有关列表的更多信息,请参阅邮件列表页面。

另请参阅查找帮助页面。

已知的问题

请搜索错误数据库以查看您所看到的错误是否已被报告。请查看变更日志页面以了解已修复的错误。尚未发布的 Tomcat 版本的变更日志也可用。更多详细信息如下。

最新版本

尝试使用最新发布的 Apache Tomcat 版本重现您的问题。

寻找已知问题

搜索错误数据库

请搜索错误数据库以查看您所看到的错误是否已被报告。

  • 该错误可能已被修复,并可在更高版本或夜间版本中使用。
  • 其他人可能已经报告了该错误,您可以添加支持信息以帮助重现和解决该错误。

搜索页面在 这里。还有 高级 搜索页面。

以下是一些搜索技巧。

  1. 搜索已关闭的错误以及未解决的错误。

    在高级搜索页面上,您可以清除“状态”字段以避免按状态过滤。

  2. 搜索不同版本的 Tomcat。

    在错误数据库中,Tomcat 由几个“产品”代表。相同的问题应该只报告一次,但修复可能会应用于不同的 Tomcat 版本。在此过程中,错误报告会在不同产品之间移动。最初针对 Tomcat 9 报告的错误已移至 Tomcat 8,稍后可能移至 Tomcat 7。因此,一次搜索所有版本是有意义的。

    以下是受支持产品的快速列表:

    • Tomcat 11Tomcat 10Tomcat 9Tomcat 8 – Tomcat 11.0.x、10.1.x、9.0.x 和 8.5.x
    • Tomcat 连接器– Tomcat 与其他 Web 服务器的集成
    • Tomcat Native – 适用于 Tomcat 的基于 APR 的本机 HTTP 和 AJP 连接器
    • Tomcat 模块– 附加 Tomcat 组件
    • Taglibs – Apache Taglibs子项目
  3. 不仅可以搜索摘要字段,还可以搜索评论字段

    在高级搜索页面上,打开“详细错误信息”,然后在“评论”字段中输入您的查询。

  4. 您可以将结果限制为最近更改的问题。

    在高级搜索页面上,打开“按更改历史记录搜索”,然后在-2m一对“之间”字段中的第一个字段中输入“ ”,以将结果限制为过去 2 个月内更改的问题。

  5. 有些错误不属于 Tomcat。

    Tomcat 捆绑了来自其他几个项目的库。您可以在您的发行版中查看发行说明和通知文件以了解详细信息。更多详细信息在下面的单独部分中。

变更日志

如果您正在寻找最近解决的问题,有几个地方可以查看。

  • 已发布版本的变更日志文件

    这些内容发布在 Tomcat 网站上。

  • 尚未发布版本的变更日志文件

    这些可以在源代码中找到。

    它们采用 XML 格式,并附有样式表。因此现代网络浏览器可以很好地显示它们。

    这些文件也可以在夜间文档版本中找到。有关详细信息,请参阅Buildbot页面。

链接:

产品 变更日志(已发布) 变更日志(未发布)
Tomcat 11.0 (main) 变更日志.html changelog.html-CI
Tomcat 10.1 变更日志.html changelog.html-CI
Tomcat 9.0 变更日志.html changelog.html-CI
Tomcat 8.5 变更日志.html changelog.html-CI
Tomcat Connectors 变更日志.html 变更日志.xml
Tomcat Native 2.0 变更日志.html 变更日志.xml
Tomcat Native 1.2 变更日志.html 变更日志.xml

第三方组件

Tomcat 捆绑了来自其他几个项目的库。有关详细信息,请参阅发行版中的 RELEASE-NOTES 和 NOTICE 文件。用于构建 Tomcat 的组件版本在build.properties.default源发行版的文件中定义。

值得注意的组件是:

  • Tomcat 服务启动器 – commons-daemon-*, tomcatN.exe, tomcatNw.exe

    该服务启动器由Apache Commons Daemon项目提供 。

    使用该项目中的术语,*nixes 启动器称为 *nixes 启动器jsvc,Windows 启动器称为 procruntomcatN.exeTomcat 发行版中的和 程序tomcatNw.exe刚刚重命名为 Apache Commons Daemon 二进制发行版中的prunsrv.exeprunmgr.exe

  • DBCP 数据库池实施 – tomcat-dbcp.jar.

    该池实现由Apache Commons PoolApache Commons DBCP项目提供 。

    这两个项目中的类被重命名为不同的包,以避免 Web 应用程序使用相同的库、重新编译并打包到单个 JAR 文件时发生冲突。

  • JDBC 数据库池实现 – tomcat-jdbc.jar.

    此池实现可用于 Tomcat 7 及更高版本,它来自jdbc-pool项目,该项目是Tomcat Modules的一部分。该库是与主 Tomcat 一起开发的。

  • Tomcat Maven 插件子项目在JIRA 数据库 中跟踪其问题 。

报告 Apache Tomcat 错误

请确保问题是 Apache Tomcat 中的错误,而不是您的 Web 应用程序中的错误。

请注意,不应通过 Bugzilla 报告与安全相关的问题 。

如何撰写错误报告

请尽可能地提供更多的资料。如果研究问题的人无法重现错误,那么修复错误就非常困难。另请参阅 错误编写指南

错误提交从 这里开始。您必须在错误报告中包含以下信息:

  • 产品。以下是支持的产品列表:

    • Tomcat 11 – Tomcat 11.1.x 和 tomcat.apache.org 网站
    • Tomcat 10 – Tomcat 10.1.x
    • Tomcat 9 – Tomcat 9.0.x
    • Tomcat 8 – Tomcat 8.5.x
    • Tomcat 连接器– Tomcat 与其他 Web 服务器的集成。用于Apache HTTPD 和其他 Web 服务器的mod_jk模块。
    • Tomcat Native – 使用本机代码并与 Apache APR 和 OpenSSL 库链接的 Tomcat 的 HTTP 和 AJP 连接器
    • Tomcat 模块– 其他 Tomcat 组件,例如jdbc-pool
    • Taglibs – Apache Taglibs子项目
  • 版本– Apache Tomcat 版本。

    请不仅从列表中选择它,而且在您的文本中提及它。错误描述可以更新,因此在文本中提及版本也很重要。

  • 组件– 有错误的组件。

    如果你不知道,就猜猜吧。

  • 平台操作系统——Tomcat 运行的硬件平台和操作系统。

  • 严重性– 这适用normal于常见的错误报告和enhancement增强请求。

    如果您倾向于将其标记为critical,那么您可能做错了。该问题很可能已经已知并已修复,或者根本不是问题。

  • 配置详情

    请在您的文字中提及这些:

    • Java 版本 – 用于运行 Tomcat 的 Java 运行时环境的供应商和版本。
    • 如果 Tomcat 在Apache HTTPD或其他 Web 服务器后面使用 - 其版本及其配置方式。
    • 正在使用的 Tomcat 连接器。Tomcat 中有多种连接器的实现。Tomcat 启动期间的日志中会显示正在使用哪一个。
  • 附件

    如果配置文件和 Tomcat 日志文件有助于追踪错误,请附上它们。

  • 复制器

    请描述如何在干净的 Tomcat 安装上重现您的问题。如果可以,请提供一个简单的示例 Web 应用程序来演示该问题。

如何提交补丁和增强请求

Tomcat 的增强请求使用与错误报告相同的过程提交,但在“严重性”字段中您将选择值“ enhancement”。

对于通过 GitHub 提供的组件,您可以提供建议的补丁作为拉取请求。或者,您可以将建议的补丁附加到 Bugzilla 问题中。提供补丁时,请注明它适用于哪个版本的源代码。 欢迎任何补丁,但我们更喜欢使用统一差异格式的补丁 。diff -u 这些可以使用命令 或svn diff或命令生成git diff

要修补和构建 Apache Tomcat,请参阅以下参考资料:

  • Apache Tomcat 的存储库访问
  • 阅读源代码分发中的 BUILDING.txt

准备文档补丁:

阅读源发行版中 BUILDING.txt 文件中有关构建文档的部分。通常Tomcat版本的文档位于 webapps/docs/源代码的目录中,可以使用ant build-docs命令构建。

要构建文档,拥有 Java 运行时和Apache Ant的副本就足够了。应该不需要编译 Tomcat 代码。

通用参考:

安全问题

与安全相关的错误尤其值得关注。如果您有经过验证的安全错误需要报告,请不要将其发布到公共电子邮件列表,也不要提交错误报告。请参阅安全报告页面了解如何报告它们。