我们在Windows上运行Tomcat8,由于Windows锁定了大量的属性,重新部署应用程序有时会失败.
我发现这个文档说你必须将AntiResourceLocking
-attribute 添加到Context
-element:Apache Tomcat 8 Configuration Reference
我们所有的服务器都是使用脚本构建的,所以这样做server.xml
应该不是问题(如果它有效?):
当服务器重新启动时,Tomcat会打印出以下错误,我们对于出现的问题没有真正的线索:
Failed to initialize component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[null]] Caused by: org.apache.catalina.LifecycleException: Failed to initialize component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[null]] Caused by: java.lang.NullPointerException at org.apache.catalina.core.StandardContext.getObjectKeyPropertiesNameOnly(StandardContext.java:6233)
有没有人这样做过?我错过了什么吗?
你所缺少的是之间的差异conf/server.xml
和conf/context.xml
.
向您添加
元素时,conf/server.xml
正在定义单个上下文(Web应用程序).这相当于在作为Web应用程序的一部分打包的文件
中CATALINA_BASE/conf/
或/META-INF/context.xml
文件中定义元素.
的
在元件conf/context.xml
定义了所有上下文(web应用)的默认值.
您添加的单个Context元素conf/server.xml
失败,因为您尚未指定路径.
如果您真的想为所有Web应用程序启用反资源锁定,那么您需要将antiResourceLocking ="true"作为属性添加到
元素中 CATALINA_BASE/conf/context.xml
.
另外,此选项仅适用于Web应用程序中的资源泄漏.您可能需要考虑花时间修复这些资源泄漏.