contextloader-RootWebApplicationContext在ubuntu tomcat上初始化了3次

ql3eal8s  于 2021-10-10  发布在  Java
关注(0)|答案(1)|浏览(299)

亲爱的,我在ApacheTomcat9.0.46上部署了一个jersey-spring api(jersey处理restful服务jax rs,spring处理我的所有Bean{控制器、dao、sessionfactory、jpa等…})。在windows上的Tomcat9上一切都正常。。。在ubuntu tomcat 9.0.46中部署完全相同的war时,contextloader被触发了3次,我的所有单例都被示例化了3次。我正在tomcat端口80和443(https-godady证书)上部署api。一旦我启动tomcat,war就会部署,端口80和443就会启动(netstat-tulnp | grepJava),我在日志中看到所有单例示例(pool-2)applicationcontext类我的自定义spring@configuration类,它正在被触发,访问db时没有任何问题

2021-06-09 14:41:52,128 1104 [main] INFO  o.s.web.context.ContextLoader - Root WebApplicationContext initialized in 905 ms
2021-06-09 14:41:53,124 2100 [pool-2-thread-1] INFO  skd.app.core.ApplicationContext - TASK::cleanExpiredStatuses

然后服务器需要几分钟(大约10分钟,上面14:41,下面14:51),当端口8005启动时,我再次看到contextloader再次被触发2次。

09-Jun-2021 14:51:36.196 WARNING [main] org.apache.catalina.util.SessionIdGeneratorBase.createSecureRandom Creation of SecureRandom instance for session ID generation using [SHA1PRNG] took [584,064] milliseconds.
09-Jun-2021 14:51:36.592 INFO [main] org.glassfish.jersey.server.ApplicationHandler.initialize Initiating Jersey application, version Jersey: 2.6 2014-02-18 21:52:53...
09-Jun-2021 14:51:37.042 INFO [main] org.apache.catalina.startup.HostConfig.deployWAR Deployment of web application archive [/opt/apache-tomcat-9.0.46/webapps/skd-service.war] has finished in [588,185] ms

2021-06-09 14:51:39,388 696  [main] INFO  o.s.web.context.ContextLoader - Root WebApplicationContext initialized in 581 ms
09-Jun-2021 14:51:39.632 INFO [main] org.glassfish.jersey.server.ApplicationHandler.initialize Initiating Jersey application, version Jersey: 2.6 2014-02-18 21:52:53...
09-Jun-2021 14:51:40.013 INFO [main] org.apache.catalina.startup.HostConfig.deployWAR Deploying web application archive [/opt/apache-tomcat-9.0.46/webapps/skd-service.war]

第三次:

2021-06-09 14:51:41,989 744  [main] INFO  o.s.web.context.ContextLoader - Root WebApplicationContext initialized in 605 ms
09-Jun-2021 14:51:42.232 INFO [main] org.glassfish.jersey.server.ApplicationHandler.initialize Initiating Jersey application, version Jersey: 2.6 2014-02-18 21:52:53...
09-Jun-2021 14:51:42.602 INFO [main] org.apache.catalina.startup.HostConfig.deployWAR Deployment of web application archive [/opt/apache-tomcat-9.0.46/webapps/skd-service.war] has finished in [2,590] ms

在windows中一切都很好,只有在部署到ubuntu tomcat时,我才明白这一点。对于同一个war文件,有人知道为什么windows和ubuntu在tomcat行为上存在这种差异吗?

nukf8bse

nukf8bse1#

我设法解决了这个问题。该问题与/conf/server.xml中的tomcat配置有关。多个主机将为每个主机触发上下文加载程序。我将所有主机的默认appbase保留为webapps,从而触发每个主机的每个mywar的contextloader。contextloader会被多次触发的另一个原因是在内部定义选项,除非您需要加载战争外部的内容。我建议阅读规范:https://tomcat.apache.org/tomcat-4.1-doc/config/host.html

相关问题