我的开发计划在部署完成后自动重新加载上下文。日志表明已经添加了新的Jar,但是我还没有做任何事情。
为什么要重新加载上下文?
2018年9月3日8:29:35 FM org.apache.openejb.server.cxf.rs.CxfRsHttpListener configureFactory INFO:
com.dassault_systemes.federated_search.search_utils.answer.SearchAnswerMessageBodyWriter@1722ba49 2018年9月3日8:29:35 FM org.apache.openejb.server.cxf.rs.CxfRsHttpListener configureFactory INFO:
com.dassault_systemes.platform.restServices.MediaProviderJSON@118a5aca 2018年9月3日8:29:35 FM org.apache.openejb.server.cxf.rs.CxfRsHttpListener configureFactory INFO:
com.dassault_systemes.platform.restServices.MediaProviderJSONP@64dec4ca 2018年9月3日8:29:35 FM org.apache.openejb.server.cxf.rs.CxfRsHttpListener configureFactory INFO:
com.dassault_systemes.platform.ven.jackson.jaxrs.json.JsonParseExceptionMapper@5d35cfc8 2018年9月3日8:29:35 FM org.apache.openejb.server.cxf.rs.CxfRsHttpListener configureFactory INFO:
com.dassault_systemes.platform.ven.jackson.jaxrs.json.JacksonJaxbJsonProvider@5f47c6d5 2018年9月3日8:29:35 FM org.apache.openejb.server.cxf.rs.CxfRsHttpListener configureFactory INFO:
com.dassault_systemes.platform.ven.jackson.jaxrs.json.JacksonJsonProvider@1c588bfd 2018年9月3日8:29:35 FM org.apache.openejb.server.cxf.rs.CxfRsHttpListener configureFactory INFO:
com.dassault_systemes.platform.ven.jackson.jaxrs.json.JsonMappingExceptionMapper@eb2f428 2018年9月3日8:29:35 FM org.apache.openejb.server.cxf.rs.CxfRsHttpListener configureFactory INFO:
org.apache.openejb.server.cxf.rs.EJBAccessExceptionMapper@5d3567dc Sep 2018年3月3日8:29:35 FM org.apache.openejb.server.cxf.rs.CxfRsHttpListener logEndpoints信息:REST应用程序: http://localhost:9311/3dspace/resources/PreCost
-> com.matrixone.apps.apr.costing.precost.service.PreCostServiceModular 2018年9月3日8:29:35 FM org.apache.openejb.server.cxf.rs.CxfRsHttpListener logEndpoints信息: 服务URI: http://localhost:9311/3dspace/resources/PreCost/PreCostServices
-> Pojo com.matrixone.apps.apr.costing.precost.service.PreCostService 2018年9月3日8:29:35 FM org.apache.openejb.server.cxf.rs.CxfRsHttpListener logEndpoints信息: 得到 http://localhost:9311/3dspace/resources/PreCost/PreCostServices/getChartData ->响应getChartData(HttpServletRequest)引发异常[2018-09-03 08:29:35,460]工件Castor-webapp:war爆炸了: Artifact已成功部署[2018-09-03 08:29:35,462] Artifact castor-webapp:war爆炸了:部署花费了266999毫秒[TIMING] [pool-8-thread-1] INFO 2018-09-03T08:29:37,266-调用 [com.hm.pdm.core.common.department.DepartmentLogicImpl.getAll()] 在5933 ms之后正常返回。 -{} [TIMING] [pool-8-thread-1]信息 2018-09-03T08:29:37,267-致电 [com.hm.pdm.core.common.department.DepartmentLogicImpl.getAll()] 5935毫秒后正常返回。 -{} Sep 03,2018 8:29:40 FM org.apache.catalina.loader.WebappClassLoaderBase修改了INFO:
已添加其他JAR,2018年9月3日8:29:40 FM org.apache.catalina.core.StandardContext重新加载INFO:重新加载 名称为[/ 3dspace]的上下文已启动[SPRING] [ContainerBackgroundProcessor [StandardEngine [Catalina]]] INFO 2018-09-03T08:29:41,005(AbstractApplicationContext.java:987)- 关闭名称空间“ SpringMVC-servlet”的WebApplicationContext: 启动日期[2018年9月3日星期一CEST];父母:根 WebApplicationContext-{} [TVC-SYSTEM] [ContainerBackgroundProcessor [StandardEngine [Catalina]]] INFO 2018-09-03T08:29:41,024(TVCServlet.java:179)-关闭 进度...-{} [TVC-SYSTEM] [ContainerBackgroundProcessor [StandardEngine [Catalina]]] INFO 2018-09-03T08:29:41,061(TVCServlet.java:182)-Heippa-{} [CASTOR] [ContainerBackgroundProcessor [StandardEngine [Catalina]]]调试 2018-09-03T08:29:41,126(AjaxJSONTransactionFilter.java:101)- 销毁AjaxJSONTransactionFilter ...-{} [CASTOR] [ContainerBackgroundProcessor [StandardEngine [Catalina]]] INFO 2018-09-03T08:29:41,131(Log.java:440)- org.tuckey.web.filters.urlrewrite.UrlRewriteFilter INFO:销毁 称为-{} [CASTOR] [ContainerBackgroundProcessor [StandardEngine [Catalina]]]调试 2018-09-03T08:29:41,131(AjaxJSONServiceFilter.java:62)-销毁 AjaxJSONServiceFilter ...-{} [CASTOR] [ContainerBackgroundProcessor [StandardEngine [Catalina]]]调试 2018-09-03T08:29:41,132(AjaxJSONTransactionFilter.java:101)- 正在销毁QaTransactionFilter ...-{} [SPRING] [ContainerBackgroundProcessor [StandardEngine [Catalina]]] INFO 2018-09-03T08:29:41,171(AbstractApplicationContext.java:987)- 关闭根WebApplicationContext:启动日期[Mon Sep 03 08:27:41 CEST 2018];上下文层次结构的根-{} [CASTOR] [ContainerBackgroundProcessor [StandardEngine [Catalina]]] INFO 2018-09-03T08:29:41,175(AbstractExecutorsConfiguration.java:116)- 即将销毁执行者:CORE_ASYNC_JOBS-{} [CASTOR] [ContainerBackgroundProcessor [StandardEngine [Catalina]]] INFO 2018-09-03T08:29:41,175(AbstractExecutorsConfiguration.java:116)- 即将销毁执行者:CORE_ASYNCHRONOUSLY_WITH_DELAY-{} [SPRING] [ContainerBackgroundProcessor [StandardEngine [Catalina]]] INFO 2018-09-03T08:29:41,175(MBeanExporter.java:449)-取消注册 关闭时暴露于JMX的bean-{} [SPRING] [ContainerBackgroundProcessor [StandardEngine [Catalina]]] INFO 2018-09-03T08:29:41,175(MBeanRegistrationSupport.java:241)- 取消注册暴露了JMX的bean-{} Sep 03,2018 8:29:41 FM org.apache.openejb.assembler.classic.Assembler destroyApplication 信息:取消部署应用程序: C:\ GIT \ castor \ castor-main \ HM_PDM \ src \ castor-webapp \ target \ castor-webapp 2018年9月3日8:29:42 FM org.apache.openejb.util.Options日志信息INFO: 使用'openjpa.Log = org.apache.openejb.openjpa.JULOpenJPALogFactory' 2018年9月3日8:29:42 FM org.apache.openejb.assembler.classic.Assembler destroyApplication警告:未安装Log4j。下列 属性将被忽略。 2018年9月3日8:29:42 FM org.apache.openejb.assembler.classic.Assembler destroyApplication 警告:“忽略的属性”会覆盖属性“ log4j.skipJansi” 9月3日, 2018 8:29:42 FM org.apache.openejb.assembler.classic.Assembler destroyApplication信息:未部署的应用程序: C:\ GIT \ castor \ castor-main \ HM_PDM \ src \ castor-webapp \ target \ castor-webapp 2018年9月3日8:29:42 FM org.apache.catalina.loader.WebappClassLoaderBase clearReferencesThreads严重:Web应用程序[/ 3dspace]出现 已启动名为[Timer-0]的线程,但未能停止该线程。 这很可能造成内存泄漏。 2018年9月3日8:29:42 FM org.apache.catalina.loader.WebappClassLoaderBase clearReferencesThreads严重:Web应用程序[/ 3dspace]出现 已经启动了一个名为 [oracle.jdbc.driver.BlockSource.ThreadedCachingBlockSource.BlockReleaser] 但未能阻止它。这很可能会创建一个内存 泄漏。 2018年9月3日8:29:42 FM org.apache.catalina.loader.WebappClassLoaderBase clearReferencesThreads
答案 0 :(得分:1)
对于TomEE,我不能肯定地说,但是Tomcat的算法非常简单: 扫描webapps文件夹以查找更改的文件(如果使用爆炸的WAR,则扫描文件夹,在询问的问题上完全相同)。
如果文件的最后修改/更新时间更改,则认为该文件已更改。另一个选择是文件是全新的。
检测到此类文件后,它将触发该应用程序旧版本的取消部署并部署一个新文件。
请注意,此算法不会分析文件的内部更改,这无关紧要,如果您更改了文件,则可能希望将其重新部署。
因此答案很简单-如果您不想重新部署,请不要更新webapps文件夹。