gpt4 book ai didi

java - 我添加的库越多,StandardContext Processing 标准容器启动时间越长

转载 作者:行者123 更新时间:2023-11-28 22:24:05 27 4
gpt4 key购买 nike

我有一个 Java 网络应用程序,它使用带有 Ant 和 Ivy 的 Netbeans 进行管理,并使用 Tomcat 作为服务器。Tomcat版本:8.0.43

我选中了“保存时编译”,这样每次我更改代码时,应用程序都会重新部署。

因此,我进行了更改,然后 Netbeans 自动重新部署应用程序,以便在测试时可以在浏览器中看到更改。

这种重新部署过去需要 1-3 秒。

我最近在我的应用程序中添加了一个具有大量依赖项的大型库 (Apache Tika)

现在的结果是,在测试时重新部署需要更长的时间(例如:30 秒)。

我能做些什么来将重新部署时间缩短到几秒钟吗?

这是(相关部分)在应用程序重新部署时打印到日志中的(我将 StandardContext 日志记录设置为 FINE):

19-Jun-2019 12:08:52.996 INFO [http-apr-8080-exec-4] org.apache.catalina.core.StandardContext.reload Reloading Context with name [] has started

19-Jun-2019 12:08:53.055 FINE [http-apr-8080-exec-4] org.apache.catalina.core.StandardContext.listenerStop Sending application stop events

19-Jun-2019 12:08:53.125 FINE [http-apr-8080-exec-4] org.apache.catalina.core.StandardContext.stopInternal Processing standard container shutdown

19-Jun-2019 12:08:53.171 FINE [http-apr-8080-exec-4] org.apache.catalina.core.StandardContext.resetContext resetContext Catalina:j2eeType=WebModule,name=//localhost/,J2EEApplication=none,J2EEServer=none

19-Jun-2019 12:08:53.171 FINE [http-apr-8080-exec-4] org.apache.catalina.core.StandardContext.stopInternal Stopping complete

19-Jun-2019 12:08:53.171 FINE [http-apr-8080-exec-4] org.apache.catalina.core.StandardContext.startInternal Starting ROOT

19-Jun-2019 12:08:53.627 FINE [http-apr-8080-exec-4] org.apache.catalina.core.StandardContext.startInternal Processing standard container startup

19-Jun-2019 12:09:11.856 FINE [http-apr-8080-exec-4] org.apache.catalina.core.StandardContext.setPublicId Setting deployment descriptor public ID to 'null'

19-Jun-2019 12:09:12.200 FINE [http-apr-8080-exec-4] org.apache.catalina.core.StandardContext.listenerStart Configuring application event listeners

19-Jun-2019 12:09:12.405 FINE [http-apr-8080-exec-4] org.apache.catalina.core.StandardContext.startInternal Starting completed

19-Jun-2019 12:09:12.405 INFO [http-apr-8080-exec-4] org.apache.catalina.core.StandardContext.reload Reloading Context with name [] is completed

如您所见,较长的等待时间发生在调用 StandardContext.reload 时。具体来说,介于:

Processing standard container startup

Setting deployment descriptor public ID to 'null'

这对应于 StandardContext.start()43254467 之间的代码源代码。

但我仍然不确定这部分代码的原因是什么。

额外信息:

  • 我的应用程序所依赖的jar 文件位于libraries 文件夹中。

  • 依赖管理器下载的所有jar文件都存储在WEB-INF/lib中。

我的 libraries 文件夹中没有任何变化,因此我认为,在最初添加库之后,重新部署应该不需要任何额外的时间。

如何更改我的设置,以便我可以在几秒钟内再次重新部署该应用程序?

或者,当包含如此大量的库时,重新部署时间是否不可避免?

最佳答案

将已添加库中的 jar 添加到属性中:

tomcat.util.scan.StandardJarScanFilter.jarsToSkip

在 Tomcat 的 catalina.properties 文件中(位于 conf 文件夹中)。

有很多问题可以解释这个问题,例如:How to fix JSP compiler warning: one JAR was scanned for TLDs yet contained no TLDs?

关于java - 我添加的库越多,StandardContext Processing 标准容器启动时间越长,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56651185/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com