Tomcat会在一段时间后自动取消部署WAR



我在使用JDK 1.8Apache Tomcat 9.0.13时遇到了一个问题,它试图重新加载内存用户数据库&在失败时取消部署webapps的所有WAR。

异常的堆栈跟踪如下:

12-Dec-2018 14:16:45.739 INFO [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler ["http-nio-8080"]
12-Dec-2018 14:16:45.766 INFO [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler ["ajp-nio-8009"]
12-Dec-2018 14:16:45.779 INFO [main] org.apache.catalina.startup.Catalina.start Server startup in 11788 ms
12-Dec-2018 15:34:02.582 INFO [ContainerBackgroundProcessor[StandardEngine[Catalina]]] org.apache.catalina.users.MemoryUserDatabase.backgroundProcess Reloading memory user database [UserDatabase] from updated source [file:/P:/Tools/apache-tomcat-9.0.13/conf/tomcat-users.xml]
12-Dec-2018 15:34:02.582 SEVERE [ContainerBackgroundProcessor[StandardEngine[Catalina]]] org.apache.catalina.users.MemoryUserDatabase.open The specified user database [conf/tomcat-users.xml] could not be found
12-Dec-2018 15:34:03.082 INFO [ContainerBackgroundProcessor[StandardEngine[Catalina]]] org.apache.catalina.startup.HostConfig.undeploy Undeploying context []
12-Dec-2018 15:34:03.082 WARNING [ContainerBackgroundProcessor[StandardEngine[Catalina]]] org.apache.catalina.startup.HostConfig.undeploy Error while removing context []
java.lang.NoClassDefFoundError: org/apache/catalina/Lifecycle$SingleUse
at org.apache.catalina.util.LifecycleBase.stop(LifecycleBase.java:269)
at org.apache.catalina.core.ContainerBase.removeChild(ContainerBase.java:834)
at org.apache.catalina.startup.HostConfig.undeploy(HostConfig.java:1434)
at org.apache.catalina.startup.HostConfig.checkResources(HostConfig.java:1360)
at org.apache.catalina.startup.HostConfig.check(HostConfig.java:1620)
at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:304)
at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:123)
at org.apache.catalina.core.ContainerBase.backgroundProcess(ContainerBase.java:1179)
at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1401)
at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1405)
at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.run(ContainerBase.java:1373)
at java.lang.Thread.run(Thread.java:745)

请注意,tomcat-users.xml位于conf文件夹中。

有人能帮我解决这个问题吗?

谢谢。

运行Tomcat的服务器暂时失去了与P:驱动器的连接。这触发了检查tomcat-users.xml文件的失败和web应用程序的取消发布。您需要将webapps目录移动到更可靠的网络位置,或者更好的是,移动到本地驱动器。

似乎未找到文件tomcat-users.xml-可能已被删除或损坏。该文件充当Tomcat管理用户的内存数据库。再次下载Tomcat,并将丢失/损坏的文件添加到conf文件夹中。

此外,搜索server.xml的以下行,因为它在JNDI中注册为UserDatabase的实例,所以应该包括它。如果行丢失,请添加它们:

<Resource name="UserDatabase" auth="Container"
pathname="conf/tomcat-users.xml"
description="User database that can be updated and saved"
type="org.apache.catalina.UserDatabase"
factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
/> 

结论和更安全的方法是从头开始下载Tomcat的整个新实例。

最新更新