为什么Tomcat 8.5重新加载上下文

owe*_*rig 5 java tomcat8

似乎自从我们将tomcat升级到版本8+后,我们就会在启动时获得上下文重新加载.然而,它似乎只发生在我们的开发环境中(带有eclipse和tomcat 8.5的Windows操作系统).我们的生产环境(带有tomcat 8.5的linux OS)没有这个问题.我发布在下面,但我没有看到任何迹象表明为什么这是从tomcat日志发生的事情.我知道这通常会改变网络应用程序目录中的某些行为,但对于我的生活,我无法弄清楚是做什么的.必须有一些方法来追踪它.

这第一块日志是完全启动的

2017年2月18日上午9:53:41 org.apache.tomcat.util.digester.SetPropertiesRule开始警告:[SetPropertiesRule] {Server/Service/Engine/Host/Context}将属性'source'设置为'org.eclipse.jst .jee.server:Stackoverflow-commproxy'找不到匹配的属性.2017年2月18日上午9:53:41 org.apache.catalina.startup.VersionLoggerListener日志信息:服务器版本:Apache Tomcat/8.5.11 2017年2月18日上午9:53:41 org.apache.catalina.startup.VersionLoggerListener日志信息:服务器内置:2017年1月10日21:02:52 UTC 2017年2月18日上午9:53:41 org.apache.catalina.startup.VersionLoggerListener日志信息:服务器号码:8.5.11.0 2017年2月18日9:53 :上午41点org.apache.catalina.startup.VersionLoggerListener日志信息:操作系统名称:Windows 10 Feb 18,2017 9:53:41 AM org.apache.catalina.startup.VersionLoggerListener log INFO:OS Version:10.0 Feb 18,2017上午9:53:41 org.apache.catalina.startup.VersionLoggerListener日志信息:架构:amd64 2017年2月18日上午9:53:41 org.apache.catalina.startup.VersionLoggerListener日志信息:Java主页:C:\ Program Files\Java\jdk1.8.0_91\jre Feb 18,2017 9:53:41 AM org.apache.catalina.startup.VersionLoggerListener log INFO:JVM版本:1.8.0_91-b14 2017年2月18日上午9:53:41 org.apache.catalina.startup.VersionLoggerListener日志信息:JVM供应商:Oracle Corporation 2017年2月18日上午9:53:41 org.apache.catalina.startup.VersionLoggerListener日志INFO:CATALINA_BASE:C:\ CodeRepos\work\EclipseWorkspace.metadata.plugins\org.eclipse.wst.server.core\tmp0 2017年2月18日上午9:53:41 org.apache.catalina.startup.VersionLoggerListener日志信息:CATALINA_HOME:C:\ tomcat\apache-tomcat-8.5.11 2017年2月18日上午9:53:41 org.apache. catalina.startup.VersionLoggerListener log INFO:命令行参数:-Dcatalina.base = C:\ CodeRepos\work\EclipseWorkspace.metadata.plugins\org.eclipse.wst.server.core\tmp0 2017年2月18日9:53:41 AM org.apache.catalina.startup.VersionLoggerListener log INFO:命令行参数:-Dcatalina.home = C:\ tomcat\apache-tomcat-8.5.11 2017年2月18日上午9:53:41 org.apache.catalina. startup.VersionLoggerListener log INFO:命令行参数:-Dwtp.deploy = C:\ CodeRepos\work\EclipseWorkspace.metadata.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps 2017年2月18日9:53:41 AM org.apache.catalina.startup.VersionLoggerListener log INFO:逗号 nd line参数:-Djava.endorsed.dirs = C:\ tomcat\apache-tomcat-8.5.11\endorsed 2017年2月18日上午9:53:41 org.apache.catalina.startup.VersionLoggerListener log INFO:命令行参数:-Dfile.encoding = Cp1252 2017年2月18日上午9:53:41 org.apache.catalina.core.AprLifecycleListener lifecycleEvent INFO:在Java上找不到基于APR的Apache Tomcat Native库,它可以在生产环境中实现最佳性能. library.path:C:\ Program Files\Java\jdk1.8.0_91\bin; C:\ WINDOWS\Sun\Java\bin; C:\ WINDOWS\system32; C:\ WINDOWS; C:/ Program Files/Java/jre1.8.0_121/bin/server; C:/ Program Files/Java/jre1.8.0_121/bin; C:/ Program Files/Java/jre1.8.0_121/lib/amd64; C:\ ProgramData\Oracle\Java\javapath; C:\ Python27 \; C:\ Python27\Scripts; C:\ Program Files(x86)\ Intel\iCLS Client \; C:\ Program Files\Intel\iCLS Client \; C:\ Windows\system32; C :\ Windows; C:\ Windows\System32\Wbem; C:\ Windows\System32\WindowsPowerShell\v1.0 \; C:\ Program Files\Intel\Intel(R)Management Engine Components\DAL; C:\ Program Files (x86)的\Intel\Intel(R)管理引擎组件\ DAL; C:\ Program Files\Intel\Intel(R)管理引擎组件\ IPT; C:\ Program Files(x86)\ Intel\Intel(R)管理引擎组件\ IPT; C:\ Program Files(x86)\ GtkSharp\2.12\bin; C:\ Users\dever.dnx\bin; C:\ Program Files\Microsoft DNX\Dnvm \; C:\ Program Files\Microsoft SQL Server\120\Tools\Binn \; C:\ Program Files(x86)\ Windows Kits\10\Windows Performance Toolkit \; c:\ Program Files(x86)\ Microsoft SQL Server\110\Tools\Binn\ManagementStudio \; c:\Program Files(x86)\ Microsoft SQL Server\110\Tools\Binn \; c:\ Program Files\Microsoft SQL Server\110\Tools\Binn \; c:\ Program Files(x86)\ Microsoft SQL Server\110\DTS\Binn \; C:\ Program Files(x86)\ NVIDIA Corporation\PhysX\Common; C:\ Program Files(x86)\ Windows Live\Shared; C:\ WINDOWS\system32\config\systemprofile.dnx\bin; C:\ Program Files\Microsoft SQL Server\130\Tools\Binn \; C:\ WINDOWS\system32; C:\ WINDOWS; C:\ WINDOWS\System32\Wbem; C:\ WINDOWS\System32\WindowsPowerShell\v1.0 \; C:\ Program Files(x86)\ Microsoft Emulator Manager\1.0 \; C:\ Program Files\Git\cmd; C:\ Program Files \nodejs \; C:\ Program Files\Emscripten\emscripten\1.35.0; C:\ Program Files\Emscripten; C:\ Program Files\Emscripten\clang\e1.35.0_64bit; C:\ Program Files\Emscripten \node\0.12.2_64bit; C:\ Program Files\Emscripten\python\2.7.5.3_64bit; C:\ Program Files\Emscripten\java\7.45_64bit\bin; C:\ Program Files\Emscripten\crunch\1.03; C:\ Program Files\Emscripten\mingw\4.6.2_32bit; C:\ Program Files\TortoiseSVN\bin; C:\ JavaProgramFiles\jdk1.8.0_91\bin; C:\ Ruby193\bin; C:\ program files\apache-maven-3.3.9\bin; c:\ Program Files\MongoDB\Server\3.2\bin; C:\ JavaProgramFiles\apache-ant-1.9 0.7\BIN; C:\ JavaProgramFiles\XMLBeans的-1.0.3\BIN; C:\用户\德弗\应用程序数据\本地\微软\ WindowsApps; C:\用户\德弗\应用程序数据\漫游\ NPM; C:\ PROGRAM文件\日食\ JEE氖\日食;;.2017年2月18日上午9:53:41 org.apache.coyote.AbstractProtocol init INFO:初始化ProtocolHandler ["http-nio-8080"] 2017年2月18日上午9:53:41 org.apache.tomcat.util.net .NioSelectorPool getSharedSelector INFO:使用共享选择器进行servlet写/读2017年2月18日上午9:53:41 org.apache.coyote.AbstractProtocol init INFO:初始化ProtocolHandler ["ajp-nio-8009"] 2017年2月18日9 :53:41 AM org.apache.tomcat.util.net.NioSelectorPool getSharedSelector INFO:使用共享选择器进行servlet写/读2017年2月18日上午9:53:41 org.apache.catalina.startup.Catalina加载INFO:初始化时间为610毫秒2017年2月18日上午9:53:41 org.apache.catalina.core.StandardService startInternal INFO:启动服务Catalina 2017年2月18日上午9:53:41 org.apache.catalina.core.StandardEngine startInternal信息:启动Servlet引擎:Apache Tomcat/8.5.11 2017年2月18日上午9:53:44 org.apache.jasper.servlet.TldScanner scanJars信息:至少有一个JAR被扫描用于尚未包含TLD的TLD.为此记录器启用调试日志记录,以获取已扫描但未在其中找到TLD的完整JAR列表.在扫描期间跳过不需要的JAR可以缩短启动时间和JSP编译时间.2017年2月18日上午9:53:44 org.apache.catalina.core.ApplicationContext log INFO:在类路径上检测不到Spring WebApplicationInitializer类型2017年2月18日上午9:53:44 org.apache.catalina.core.ApplicationContext log INFO :初始化Spring root WebApplicationContext 2017-02-18 09:53:45.755 [localhost-startStop-1] INFO com.stackoverflow.util.common.AppConfigPostProcessor - 设置系统属性:org.jboss.logging.provider = slf4j 2017-02- 18 09:53:45.757 [localhost-startStop-1] INFO com.stackoverflow.util.common.AppConfigPostProcessor - 将默认时区设置为:UTC 2017-02-18 09:53:47.990 [localhost-startStop-1] INFO com. stackoverflow.util.concurrent.ThreadPoolTask​​Scheduler - 正在初始化ExecutorService'taskScheduler'2017-02-18 09:53:47.997 [localhost-startStop-1] INFO com.stackoverflow.service.commproxy.LoggingServiceImpl - 日志服务:init成功完成 - 18 09:53:48.011 [localhost-startStop-1] INFO com.stackoverflow.service.commproxy.DeviceServiceImpl - 设备服务 :初始化Stackoverflow设备服务... 2017-02-18 09:53:48.314 [localhost-startStop-1] INFO com.stackoverflow.cache.mapdb.MapDBCacheManager - 打开StackoverflowCommProxyCacheV4 MapDB存储.文件位置C:\ Users\dever\AppData\Local\Temp\StackoverflowCommProxyCacheV4.DeviceMetaDataCache 2017-02-18 09:53:48.314 [localhost-startStop-1] DEBUG com.stackoverflow.service.commproxy.DeviceServiceImpl - Device Service:loading本地DeviceMetaData缓存2017-02-18 09:53:48.316 [taskScheduler-1] DEBUG com.stackoverflow.service.commproxy.DeviceServiceImpl - 设备服务:启动设备池刷新任务2017年2月18日下午5:53:48 org.apache .coyote.AbstractProtocol start INFO:启动ProtocolHandler [http-nio-8080] 2017年2月18日下午5:53:48 org.apache.coyote.AbstractProtocol start INFO:启动ProtocolHandler [ajp-nio-8009] 2017年2月18日5 :53:48 PM org.apache.catalina.startup.Catalina start INFO:Server startup in 6928 ms 2017-02-18 09:53:49.774 [taskScheduler-1] INFO com.stackoverflow.service.commproxy.DeviceServiceImpl - Device Service :收到来自Stackoverflow云服务的15个项目的设备元数据列表2017-02-18 09:53:49.775 [taskScheduler-1] DEBUG com.stackoverflow .service.commproxy.DeviceServiceImpl - 设备服务:设备元数据缓存包含15个项目2017-02-18 09:53:49.806 [taskScheduler-1] INFO com.stackoverflow.service.commproxy.DeviceServiceImpl - 设备服务:执行刷新周期.花费的时间:1490毫秒2017年2月18日下午5:53:58 org.apache.catalina.core.StandardContext重新加载信息:已重新加载具有名称[/ stackoverflow-commproxy]的上下文已启动

注意没有错误,并且发生的任何操作都没有触及磁盘.记录略有例外.哪个登录到文件然而我们的设置这样它真的不应该触摸web apps目录:

log4j2.xml

    <?xml version="1.0" encoding="UTF-8"?>
<Configuration monitorInterval="180">
    <Properties>
        <!-- change the path to conference logs below to fit your system -->
        <Property name="LOG_DIR">C:\CodeRepos\logs\</Property>
Run Code Online (Sandbox Code Playgroud)

以及日志文件的其余部分:

2017年2月18日下午5:53:58 org.apache.catalina.core.ApplicationContext log INFO:关闭Spring根目录WebApplicationContext 2017-02-18 09:53:58.514 [ContainerBackgroundProcessor [StandardEngine [Catalina]]] INFO com.stackoverflow. service.commproxy.DeviceServiceImpl - 设备服务:销毁Stackoverflow设备服务... 2017-02-18 09:53:58.543 [ContainerBackgroundProcessor [StandardEngine [Catalina]]] INFO com.stackoverflow.cache.mapdb.MapDBCacheManager - Closed StackoverflowCommProxyCacheV4.DeviceMetaDataCache MapDB商店2017-02-18 09:53:58.545 [ContainerBackgroundProcessor [StandardEngine [Catalina]]] INFO com.stackoverflow.util.concurrent.ThreadPoolTask​​Scheduler - 关闭ExecutorService'taskScheduler'2017年2月18日下午5:53:58组织. apache.catalina.loader.WebappClassLoaderBase clearReferencesThreads警告:Web应用程序[Stackoverflow-commproxy]似乎已启动名为[Log4j2-Log4j2Scheduled-1]的线程但未能将其停止.这很可能造成内存泄漏.堆栈跟踪线程:sun.misc.Unsafe.park(Native Method)java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:215)java.util.concurrent.locks.AbstractQueuedSynchronizer $ ConditionObject.awaitNanos(AbstractQueuedSynchronizer. java:2078)java.util.concurrent.ScheduledThreadPoolExecutor $ DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1093)java.util.concurrent.ScheduledThreadPoolExecutor $ DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:809)java.util.concurrent.ThreadPoolExecutor.getTask( ThreadPoolExecutor.java:1067)java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1127)java.util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:617)java.lang.Thread.run(Thread. java:745)2017年2月18日下午5:54:00 org.apache.jasper.servlet.TldScanner scanJars信息:至少有一个JAR被扫描用于尚未包含TLD的TLD.为此记录器启用调试日志记录,以获取已扫描但未在其中找到TLD的完整JAR列表.在扫描期间跳过不需要的JAR可以缩短启动时间和JSP编译时间.2017年2月18日下午5:54:00 org.apache.catalina.core.ApplicationContext日志信息:没有在类路径上检测到Spring WebApplicationInitializer类型2017年2月18日下午5:54:00 org.apache.catalina.core.ApplicationContext log INFO :初始化Spring root WebApplicationContext 2017-02-18 17:54:01.637 [ContainerBackgroundProcessor [StandardEngine [Catalina]]] INFO com.stackoverflow.util.common.AppConfigPostProcessor - 设置系统属性:org.jboss.logging.provider = slf4j 2017- 02-18 17:54:01.639 [ContainerBackgroundProcessor [StandardEngine [Catalina]]] INFO com.stackoverflow.util.common.AppConfigPostProcessor - 将默认时区设置为:UTC 2017-02-18 17:54:03.732 [ContainerBackgroundProcessor [StandardEngine [Catalina] ]]] INFO com.stackoverflow.util.concurrent.ThreadPoolTask​​Scheduler - 正在初始化ExecutorService'taskScheduler'Dynid-18 17:54:03.739 [ContainerBackgroundProcessor [StandardEngine [Catalina]]] INFO com.stackoverflow.service.commproxy.LoggingServiceImpl - Logging服务:init succ 很好2017-02-18 17:54:03.751 [ContainerBackgroundProcessor [StandardEngine [Catalina]]] INFO com.stackoverflow.service.commproxy.DeviceServiceImpl - 设备服务:初始化Stackoverflow设备服务... 2017-02-18 17:54: 04.024 [ContainerBackgroundProcessor [StandardEngine [Catalina]]] INFO com.stackoverflow.cache.mapdb.MapDBCacheManager - 打开StackoverflowCommProxyCacheV4 MapDB存储.文件位置C:\ Users\dever\AppData\Local\Temp\StackoverflowCommProxyCacheV4.DeviceMetaDataCache 2017-02-18 17:54:04.024 [ContainerBackgroundProcessor [StandardEngine [Catalina]]] DEBUG com.stackoverflow.service.commproxy.DeviceServiceImpl - Device Service :加载本地DeviceMetaData缓存2017-02-18 17:54:04.025 [taskScheduler-1] DEBUG com.stackoverflow.service.commproxy.DeviceServiceImpl - 设备服务:启动设备池刷新任务2017年2月18日下午5:54:04组织.apache.catalina.core.StandardContext重新加载INFO:名称为[/ Stackoverflow-commproxy]的重新加载上下文已完成2017-02-18 17:54:04.987 [taskScheduler-1] INFO com.stackoverflow.service.commproxy.DeviceServiceImpl - Device服务:收到来自Stackoverflow云服务的15个项目的设备元数据列表2017-02-18 17:54:04.987 [taskScheduler-1] DEBUG com.stackoverflow.service.commproxy.DeviceServiceImpl - 设备服务:设备元数据缓存包含15个项目2017 -02-18 17:54:05.020 [taskScheduler-1]信息c om.stackoverflow.service.commproxy.DeviceServiceImpl - 设备服务:执行刷新周期.花费的时间:995

我们可以看到有关log4j启动并且无法停止的某些线程的错误,但除此之外没有任何指示导致上下文重新加载的错误,并且关于log4j的错误仅发生因为重新加载.

如何查找上下文重新加载的原因.我们有几个项目在这个问题上受到影响,有些项目似乎比一个特定的过程或类更全球化.

还没有收到任何答案,所以我只想重申一下这个事实,我真的在寻找下一步的故障排除方法吗?一些其他日志要查看或某种方式来找出触发上下文重新加载的内容

Jör*_*örg 6

您可以尝试以下设置:

  1. 从 Eclipse Servers View 打开您的服务器配置
    • 然后确保在此编辑器的“服务器选项”部分中未选中“默认情况下自动重新加载模块”
    • 也确保在编辑出版科“从不自动发布”选择
  2. 在 Eclipse 服务器视图中打开服务器的上下文菜单
    • 选择“添加和删除...”
    • 在对话框中确保取消选中“如果服务器已启动,立即发布更改”并完成(您可能还必须先删除所有 web 应用程序,然后在另一个步骤中再次添加它们)