如题,在项目开发阶段,使用了Nginx和tomcat、redis集群时出现了标题问题
问题还原
使用Nginx代理和tomcat集群时,访问某页面,页面title部分一直在转圈圈,过了几秒之后页面提示如下
看到此画面,以为出了什么问题,结果再次访问以下该页面,效果又正常显示了
查了下百度,看看有没有同等问题,浪费了半小时,发现还是没解决问题,后来自己检查各项配置
- Nginx配置
在这里我配置了3访问超时效果,就是这里的问题了,在访问页面3秒之后还没得到回应,页面就出现了最开始的画面,仔细检查了这几项配置,再三确认没有问题。之后跑到了web.xml文件里去找问题,最后发现问题。 - web.xml配置
看起来貌似没有问题,但是仔细想了会,貌似少了啥代码,想了10几秒,突然脑海中跳出来了一句话 启动立即执行
原来是少了这行代码
容器启动立即加载,为什么少了这行代码就会出现问题呢? - 原因在于
我们需要在服务器启动的时候就要立即去加载容器
如果我们不加这行代码,那么tomcat一加载,服务器首先给容器的配置文件进行加载,但是并没有给里面实例化对象,servlet相当于刚开始就没有真实的起作用。
servlet什么时候才起作用啊?当用户第一次发起请求的时候,它才开始起作用,这个时候才开始起作用,也就是servlet现在才真正的去加载和实例化配置文件,和里面的具体信息,但是,大家要知道,容器启动的时间并不止3秒(我前面说过的,我的nginx设置的是3秒超时),那么3秒时间一到就会报超时,但是等我们再第二次刷新的时候,服务器容器已经启动好了,所以就没问题了,所以,归根结底,只是少了一行代码而已
我写博文主要是为了记录曾经犯下的错误,方便以后忘记了再看看博文还能回想起来
对于某些知识点,或许不是理解的不是很到位,或者写的不是很到位
大家看看就好,我只是记录
谢谢!