【问题标题】:Adding/Modifying Tomcat Library添加/修改 Tomcat 库
【发布时间】:2018-05-21 01:46:55
【问题描述】:

我想用 Java、Eclipse 和 Tomcat 9.0.8 创建一个 Web 应用程序。但我看到与其他服务器相比,Tomcat 服务器附带的库很少。我需要使用更多的库,并且可能更新一些库。我需要使用更多的 javaee 库,并且可能需要修改一些已经包含在 Tomcat 中的库。

我可以替换 Tomcat lib 文件夹中的库吗?例如,我想将 servlet-api.jar 版本 4.0.0 替换为 4.0.1 版本。

我可以向该文件夹添加更多库吗?比如javaee.jar?

【问题讨论】:

  • 您为什么想要/需要这样做?
  • 例如。我想在 lib 文件夹中添加 JSF 库,所以我可以在 maven 中指定我创建的每个项目中提供的 jsf 库。我只是在学习 tomcat 的工作原理。
  • 完全从您的 POM 中管理您的依赖项。对于 Tomcat JAR,您可能需要告诉 Maven 它们是在运行时提供的。除此之外,不要篡改 Tomcat JAR。

标签: java tomcat jakarta-ee


【解决方案1】:

“我需要 ...更新一些[库]”(来自您的问题)和“我只是在学习 tomcat 的工作原理”(来自您的评论)的组合听起来是相反的-对我来说很直观。

当然,您可以在 tomcat 上随意更改任何您喜欢的内容。您必须意识到,没有人会做同样的事情并进行测试。如果你遇到问题并打算在这里或其他地方发布任何问题,你应该包括你已经替换了几个测试 tomcat 的库的事实。

在公共类路径中添加类可能有意义,也可能没有意义。 https://tomcat.apache.org/tomcat-9.0-doc/class-loader-howto.html 建议不要在那里添加 application 类:

Common——这个类加载器包含了额外的类 对 Tomcat 内部类和所有 Web 应用程序都可见。

通常,不应将应用程序类放在此处。 ...

话虽如此,是的,您可以在那里添加类,它们将可用于所有 Web 应用程序。但是,与 Web 应用程序中包含的应用程序相比,不能在运行时对这些类中的任何一个进行更新。 Webapps 可以在运行的 tomcat 中重新部署。更新公共类加载器中的类需要重启 tomcat。

正如您提到的,您还需要 javaee.jar,您可能会更喜欢 TomEE,与普通 Tomcat 相比,它捆绑了更多的 jar。

【讨论】:

  • 好的,那么最合理的做法就是不要碰那些库。如果我在 Maven 中包含一个库依赖项,其 -compile_ 范围的版本高于 Tomcat 服务器使用的版本,会发生什么情况?很抱歉,我的英语表达能力不强,即使是我的母语也不行。
  • 您需要年轻版本的特定功能吗?或者你只是因为它在那里而包含它?这个问题很难以抽象的方式回答。我建议在 tomcat 邮件列表中询问升级计划或保留特定版本的理由。在您的询问中包括有问题的图书馆。我不知道 servlet 4.0.0 和 4.0.1 之间的区别。语言:工作,不用担心,也不是我的母语。
  • 我想说我只想在所有东西中使用最新的,但正如你所说,稳定性更重要。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-14
  • 2021-09-14
  • 1970-01-01
  • 2015-12-21
  • 2021-01-01
  • 1970-01-01
相关资源
最近更新 更多