簡體   English   中英

為什么Tomcat 8.5重新加載上下文

[英]Why is Tomcat 8.5 reloading context

似乎自從我們將 tomcat 升級到版本 8+ 后,我們就在啟動時重新加載了上下文。 然而,它似乎只發生在我們的開發環境中(Windows 操作系統 eclipse 和 tomcat 8.5)。 我們的生產環境(tomcat 8.5 的 linux 操作系統)沒有這個問題。 我會在下面發布它,但我沒有從 tomcat 日志中看到任何關於為什么會發生這種情況的跡象。 我知道這通常是 web 應用程序目錄中的某些內容發生更改的行為,但對於我來說,我無法弄清楚它在做什么。 必須有一些方法來追蹤它。

這第一塊日志是它完全開始

2017 年 2 月 18 日上午 9:53:41 org.apache.tomcat.util.digester.SetPropertiesRule 開始警告:[SetPropertiesRule]{Server/Service/Engine/Host/Context} 將屬性“源”設置為“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.catalinaValersionLogerListener.startup.日志信息:服務器構建:2017 年 1 月 10 日 21:02:52 UTC 2017 年 2 月 18 日 9:53:41 AM org.apache.catalina.startup.VersionLoggerListener 日志信息:服務器編號:8.5.11.0 2017 年 2 月 18 日 9:53 :41 AM org.apache.catalina.startup.VersionLoggerListener 日志信息:操作系統名稱:Windows 2017 年 2 月 18 日 9:53:41 AM org.apache.catalina.startup.VersionLoggerListener 日志信息:操作系統版本:10.0 2 月 17 日 10.0 9:53:41 AM org.apache.catalina.startup.VersionLoggerListener 日志信息:體系結構:amd64 2017 年 2 月 18 日 9:53:41 AM org.apache.catalina.startup.VersionLoggerListener 日志信息:88374395953280 主頁:85953280 主頁:8581 Files\Java\jdk1.8.0_91\jre 2017 年 2 月 18 日上午 9:53:41 org.apache.catalina.startup.VersionLoggerListener 日志信息:JVM Versio n:1.8.0_91-b14 2017 年 2 月 18 日上午 9:53:41 org.apache.catalina.startup.VersionLoggerListener 日志信息:JVM 供應商:Oracle 公司 2017 年 2 月 18 日 9:53.8863 AM org2 startup.VersionLoggerListener 日志信息:CATALINA_BASE:C:\CodeRepos\work\EclipseWorkspace.metadata.plugins\org.eclipse.wst.server.core\tmp0 2017 年 2 月 18 日上午 9:53:41 org.apache.catalina VersionLoggerListener 日志信息:CATALINA_HOME:C:\tomcat\apache-tomcat-8.5.11 2017 年 2 月 18 日上午 9:53:41 org.apache.catalina.startup.VersionLoggerListener 日志信息:命令行參數:-Dcatalina.base=C :\CodeRepos\work\EclipseWorkspace.metadata.plugins\org.eclipse.wst.server.core\tmp0 2017 年 2 月 18 日上午 9:53:41 org.apache.catalina.startup.VersionLoggerListener 日志信息:命令行參數:- Dcatalina.home=C:\tomcat\apache-tomcat-8.5.11 2017 年 2 月 18 日上午 9:53:41 org.apache.catalina.startup.VersionLoggerListener 日志信息:Co 命令行參數:-Dwtp.deploy=C:\CodeRepos\work\EclipseWorkspace.metadata.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps Feb 18, 2017 9:53:41 AM org.apache.catalina .startup.VersionLoggerListener 日志信息:命令行參數:-Djava.endorsed.dirs=C:\tomcat\apache-tomcat-8.5.11\endorsed 2017 年 2 月 18 日上午 9:53:41 org.apache.catalina.startup。 VersionLoggerListener 日志信息:命令行參數:-Dfile.encoding=Cp1252 Feb 18, 2017 9:53:41 AM org.apache.catalina.core.AprLifecycleListener lifecycleEvent 信息:基於 APR 的 Apache Tomcat 本機庫可在生產環境中實現最佳性能was not found on the java.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 F iles/Java/jre1.8.0_121/lib/amd64;C:\ProgramData\Oracle\Java\javapath;C:\Python27\;C:\Python27\Scripts;C:\Intel 程序文件\;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) Management Engine Components\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 P 性能工具包\;c:\Program Files (x86)\Microsoft SQL Server\110\Tools\Binn\ManagementStudio\;c:\Program Files (x86)\Microsoft SQL Server\110\B85\Tools\110\B85\Tools文件\Microsoft SQL Server\110\Tools\Binn\;c:\Program Files (x86)\Microsoft SQL Server\110\DTS\Binn\;C:\Program Files (x86)\hys8X18Common37 :\Program Files (x86)\Windows Live\Shared;C:\WINDOWS\system32\config\systemprofile.dnx\bin;C:\Program Files\Microsoft SQL Server\130\Tools\Binn\;C:\INDOWS8:\ system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0\;C:\Program Files (x86)\Microsoft Emulator8:8\Program360;8Manager8\Program360;8Manager81.61文件\Git\cmd;C:\Program Files\nodejs\;C:\Program Files\Emscripten\emscripten\1.35.0;C:\Prog ram 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.7637853_1863785.5.64 :\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 FilesV\TortoiseS; C:\JavaProgramFiles\jdk1.8.0_91\bin;C:\Ruby193\bin;C:\program files\apache-maven-3.3.9\bin;c:\Program Files\MongoDB\Server\86.2\bin5 :\JavaProgramFiles\apache-ant-1.9.7\bin;C:\JavaProgramFiles\xmlbeans-1.0.3\bin;C:\Users\dever\AppData\Local\Microsoft\WindowsApps;C:\Users\dever\AppData \漫游\npm;C:\Program Files\eclipse\jee-neon\eclipse;;. 2017 年 2 月 18 日上午 9:53:41 org.apache.coyote.AbstractProtocol init 信息:初始化 ProtocolHandler [“http-nio-8080”] 2017 年 2 月 18 日上午 9:53:41 org.apache.88245371585.util.util.util.netol getSharedSelector 信息:使用共享選擇器進行 servlet 寫入/讀取 2017 年 2 月 18 日 9:53:41 AM org.apache.coyote.AbstractProtocol init 信息:初始化 ProtocolHandler [“ajp-nio-8009”] 2017 年 2 月 18 日 9:53 :41 AM org.apache.tomcat.util.net.NioSelectorPool getSharedSelector 信息:使用共享選擇器進行 servlet 寫入/讀取 2017 年 2 月 18 日 9:53:41 AM org.apache.catalina.startup.Catalina 加載信息:初始化已在 610 中處理ms Feb 18, 2017 9:53:41 AM org.apache.catalina.core.StandardService startInternal 信息:啟動服務 Catalina 2017 年 2 月 18 日 9:53:41 AM org.apache.catalina.core.StandardEngine startInternal 信息:啟動 Servlet引擎:Apache Tomcat/8.5.11 2017 年 2 月 18 日上午 9:53:44 org.apache.jasper.servlet.TldSc anner scanJars 信息:至少一個 JAR 掃描了 TLD,但不包含 TLD。 為該記錄器啟用調試日志記錄,以獲得已掃描但未在其中找到 TLD 的 JARs 的完整列表。 在掃描過程中跳過不需要的 JARs 可以縮短啟動時間和 JSP 編譯時間。 2017 年 2 月 18 日上午 9:53:44 org.apache.catalina.core.ApplicationContext 日志信息:否 Spring 在類路徑上檢測到 WebApplicationInitializer 類型 2017 年 2 月 18 日上午 9:53:44 org.apache.catalina.core.ApplicationContext 日志信息: 初始化 Spring root WebApplicationContext 2017-02-18 09:53:45.755 [localhost-startStop-1] INFO com.stackoverflow.util.common.AppConfigPostProcessor - 設置系統屬性:org.jboss.logging.provider-0174j2 2 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.ThreadPoolTaskScheduler - 初始化 ExecutorService 'taskScheduler' 2017-02-18 09:53:47.997 [localhost-startStop-1] INFO com.stackoverflow.service.commproxy.LoggingServiceImpl - 日志記錄服務:初始化成功 2017-02- 18 09:53:48.011 [localhost-star tStop-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.DeviceService: loadingImpl本地 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 啟動信息:啟動 ProtocolHandler [http-nio-8080] 2017 年 2 月 18 日下午 5:53:48 org.apache.coyote.AbstractProtocol 啟動信息:啟動 ProtocolHandler [ajp-nio-8009] 2017 年 2 月 18 日 5下午:53:48 org.apache.catalina.startup.Catalina 啟動信息:服務器啟動時間為 6928 毫秒 2017-02-18 09:53:49.774 [taskScheduler-1] 信息 com.stackoverflow.service.commproxy.DeviceServiceImpl - 設備服務:從 Stackoverflow Cloud Serv 收到包含 15 項的設備元數據列表 ices 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 ] 信息 com.stackoverflow.service.commproxy.DeviceServiceImpl - 設備服務:執行刷新周期。 花費時間:1490 毫秒 2017 年 2 月 18 日下午 5:53:58 org.apache.catalina.core.StandardContext 重新加載信息:重新加載名稱為 [/stackoverflow-commproxy] 的上下文已開始

請注意沒有錯誤,並且發生的所有操作都不會觸及磁盤。 日志記錄略有例外。 哪個確實記錄到文件但是使用我們這樣的設置它真的不應該觸及 web 應用程序目錄:

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>

以及日志文件的 rest:

2017 年 2 月 18 日 5:53:58 PM org.apache.catalina.core.ApplicationContext 日志信息:關閉 Spring root WebApplicationContext 2017-02-18 09:53:58.514 [ContainerBackgroundProcessor[StandardEngine[Catalina]]] INFO88.809.8001 service.commproxy.DeviceServiceImpl - 設備服務:破壞 Stackoverflow 設備服務... 2017-02-18 09:53:58.543 [ContainerBackgroundProcessor[StandardEngine[Catalina]]] INFO com.stackoverflow.cache.mapdb.MapDBCacheManager - 關閉 StackoverflowCommProxyCacheMetaData4.Dacheevice MapDB 商店 2017-02-18 09:53:58.545 [ContainerBackgroundProcessor[StandardEngine[Catalina]]] 信息 com.stackoverflow.util.concurrent.ThreadPoolTaskScheduler - 關閉 ExecutorService 'taskScheduler' 2017 年 2 月 18 日下午 5:53.:58 組織apache.catalina.loader.WebappClassLoaderBase clearReferencesThreads 警告:web 應用程序 [Stackoverflow-commproxy] 似乎啟動了一個名為 [Log4j2-Log4j2Scheduled-1 的線程 ] 卻未能阻止。 這很可能會造成 memory 泄漏。 線程的堆棧跟蹤:sun.misc.Unsafe.park(Native Method) java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:215) java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos 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 的 JARs 的完整列表。 在掃描過程中跳過不需要的 JARs 可以縮短啟動時間和 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 日志信息: 初始化 Spring root WebApplicationContext 2017-02-18 17:54:01.637 [ContainerBackgroundProcessor[StandardEngine[Catalina]]] INFO com.stackoverflow.util.common.AppConfigPostProcessor - 設置系統屬性:org.881692=80loglfging7598 02-18 17:54:01.639 [ContainerBackgroundProcessor[StandardEngine[Catalina]]] 信息 com.stackoverflow.util.common.AppConfigPostProcessor - 將默認時區設置為:UTC 2017-02-18 17:54:03.732 [ContainerBackgroundProcessor[StandardE ]]] 信息 com.stackoverflow.util.concurrent.ThreadPoolTaskScheduler - 初始化 ExecutorService 'taskScheduler' 2017-02-18 17:54:03.739 [ContainerBackgroundProcessor[StandardEngine[Catalina]]] 信息 8816897000 7088.stackoverflow.service.commproxy.LoggingServiceImpl - 日志記錄服務:成功初始化 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]]] 調試 com ServiceDeviceServicempl.stackoverflow.commpiceroxy.service :加載本地 DeviceMetaData 緩存 2017-02-18 17:54:04.025 [taskScheduler-1] DEBUG com.stackoverflow.service.commproxy.DeviceServiceImpl - 設備服務:啟動設備池刷新任務 2017 年 2 月 18 日下午 5:54:04 org .apache.catalina.core.StandardContext 重新加載信息:使用名稱 [/Stackoverflow-commproxy] 重新加載上下文已完成 2017-02-18 17:54:04.987 [taskScheduler-1] 信息 com.stackoverflow.service.commproxy.DeviceServiceImpl - 設備服務:從 Stackoverflow 雲服務 2017-02-18 17:54:04.987 [taskScheduler-1] 接收到包含 15 個項目的設備元數據列表 DEBUG com.stackoverflow.service.commproxy.DeviceServiceImpl - 設備服務:設備元數據緩存 c ontains 15 items 2017-02-18 17:54:05.020 [taskScheduler-1] INFO com.stackoverflow.service.commproxy.DeviceServiceImpl - 設備服務:執行刷新周期。 花費時間:995

我們可以看到有關 log4j 啟動但無法停止的某些線程的錯誤,但除此之外沒有指示導致上下文重新加載的原因,而有關 log4j 的錯誤僅由於重新加載而發生。

我怎樣才能找到上下文重新加載的原因。 我們有幾個項目受到這個問題的困擾,有些項目似乎比特定流程或 class 更具全局性。

還沒有收到任何答案,所以我只是想重申一個事實,我真的在尋找解決此問題的下一步? 要查看的其他一些日志或以某種方式找出觸發上下文重新加載的內容

您可以嘗試以下設置:

  1. 從Eclipse Servers View打開服務器配置
    • 然后確保在此編輯器的“服務器選項”部分“默認情況下模塊自動重新加載”未選中
    • 還要確保在該編輯器中選擇發布部分“從不自動發布”
  2. 在Eclipse Servers View中打開服務器的上下文菜單
    • 選擇“添加和刪除...”
    • 在對話框中確保“如果服務器已啟動,立即發布更改”未選中並完成(您可能還必須首先刪除所有Web應用程序並在另一步驟中再次添加它們)

從當前信息很難說,所以我只能給出一些建議來幫助你:

  • 檢查conf/context.xml ,您可以看到您的watchedResources是否已更改。

 <!--Default set of monitored resources. If one of these changes, the --> <!-- web application will be reload.--> <WatchedResource>WEB-INF/web.xml</WatchedResource> <WatchedResource>${catalina.base}/conf/web.xml</WatchedResource> 

  • 您可以在context.xml中將標記指定為<Context reloadable="false">以嘗試停止此問題。
  • 更多日志記錄:localhost.date.log,host-manager.date.log
  • 這個線程 ,它說它可能與Eclipse有關,它建議檢查Eclipse中的jar與安裝的tomcat使用的jar:

    當jar(在Eclispe中)具有未來時間戳,或者在Tomcat啟動后加載時,有時會出現問題,這會導致Tomcat重新加載上下文。

  • 實現ServletContextListener並檢查ServleConextEvent以查找有關上下文狀態的信息。

Go 到server.xml文件通過ctrl+shift+R搜索 Under give value as false for reloadable如下。

<Context docBase="YourAppName" path="/YourApp" reloadable="false" source="org.eclipse.jst.j2ee.server:YourAppName"/>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM