問題:
使用WAR文件(在WEB-INF/classes中)部署XCC庫將禁止重新部署/更新該webapp而不重新啓動整個Tomcat容器。它只是停止工作,因爲仍然有資源分配,因此Tomcat無法刪除一些JAR文件。
當部署在雄貓lib目錄庫(如JDBC驅動程序會),在Tomcat Tomcat的日誌中,隨後寫入內存泄漏的警告:如何在Apache Tomcat中部署Marklogic XCC庫?
17-Mar-2016 10:58:45.683 WARNING [ContainerBackgroundProcessor[StandardEngine[Catalina]]] org.apache.catalina.loader.WebappClassLoaderBase.clearReferencesThreads The web application [api] appears to have started a thread named [Thread-4] but has failed to stop it. This is very likely to create a memory leak. Stack trace of thread: java.lang.Thread.sleep(Native Method) com.marklogic.xcc.ContentSourceFactory$ConnectionCollector.run(ContentSourceFactory.java:449)
我發現了什麼:
我做了一些調查並發現(至少在XCC 8.0.3中)在ContentSourceFactory中有一個始終不會關閉的線程。該線程正在影響servlet的更新/重新部署並造成內存泄漏。我的快速解決方案是創建一個自定義的ContentSourceFactory,它具有一個在servlet停止時會被調用的關閉方法。
問題:
不幸的是我沒有在文檔中找到任何線索。那麼在servlet容器中使用XCC庫(8.x)的官方方式是什麼?