linux - 服务start 无法启动服务,servlet.log 中没有任何错误
问题描述
我最近将 Apache tomcat 从 7.x 升级到了 8.5.29。tomcat 部署在我的应用程序中。我有/etc/init.d
启动 tomcat 的脚本(当然还有我的一些项目特定的其他服务)。
命令:服务启动工作正常,直到我在 tomcat 7 上,然后在升级到 tomcat 8.5.29 后,此命令停止工作。/etc/init.d
脚本完全没有变化。只是tomcat升级的问题。Servlet.log 没有显示任何错误,但是如果我比较 tomcat 7 和 tomcat 8.5.29 的 servlet.log,那么我可以发现我的应用程序没有加载。因此,tomcat 8 的 servlet.log 中没有错误。
而如果我使用/etc/init.d/<myapp -tomcat8> start
.
如果我能得到你们所有人的帮助,我将不胜感激。
解决方案
因此,经过 2-3 天的斗争,我找到了自己问题的解决方案。有人可能会觉得有用。
我在两个不同的系统上打开了 apache tomcat 7 的调试模式(我正在使用 log4j2 并且已经配置好了)和 apache tomcat 8,并将 apache tomcat 7 的工作日志与 apache tomcat 8 的非工作日志进行了比较。我发现 tomcat8正在扫描许多额外的和不相关的东西。
我更新了位于 Tomcat 的 /conf 目录中的 context.xml,如下所示,这对我有用。
<JarScanner scanClassPath="false"/>
请注意以下事项:
- 将上面放在应用程序特定的 context.xml 中对我不起作用。
- 更新 catalina.properties 文件
tomcat.util.scan.StandardJarScanFilter.jarsToSkip=\*.jar
也不适合我。 - 进行更改后,我遇到了错误:
java.lang.IllegalStateException: No output folder
但这是由于 tomcat 文件夹的权限/所有权错误。
推荐阅读
- c# - Windows 7 中的 appresolver.dll 或类似文件
- python - 查字典内容后在GUI界面显示输出
- php - 如何正确迭代 Mustache 中具有私有属性的对象数组?
- r - R,闪亮:ggplot,geom_bar,当填充是反应性时,它们的填充参数的条形顺序
- paypal - 使用 PayPal Payments API 进行订阅支付
- google-sheets - 谷歌表格过滤包含特定文本的唯一值
- entity-framework-core - 如何在没有主键的实体框架中查找记录
- react-native - 将位置值传递给 React Native 中的另一个组件
- wordpress - React 应用程序将 html 实体(例如 & 符号)渲染为转义
- c++ - 成功构建cmake文件,执行时找不到dll文件