CATALINA

xiaoxiao2021-02-28  135

一切都是巧合!

问题描述

今天的任务是在一个Web服务中新增一个接口供另一个Web服务通过Http进行访问。 使用的IDE是IDEA,到现在还没有弄明白怎样在IDEA内同时启动两个Web服务进行调试(并且这两个Web服务属于同一个Project的两个Module)。所以采取的方法是分别调通后联调,步骤如下: - 在IDE中启动提供接口的服务A,通过浏览器直接访问对应的URL,将A服务的接口调试通过; - 在本地的Tomcat中发布服务A,并启动Tomcat; - 在IDE中启动调用接口的服务B,并访问Tomcat中的服务A的接口。


看上去应该没什么问题,然而,诡异的事情出现了: - 服务B在调用时提示404 NOT FOUND; - 直接在浏览器中访问服务A的接口,也是404 NOT FOUND; - 重新在IDEA中启动服务A,访问接口,没问题; - 重新发布一遍,仍然404; - 而在浏览器中访问服务A的一个旧接口,却是正常的……

问题定位

不可能见鬼,所以肯定哪里出问题了。 从问题的表象来看,新接口404,旧接口200。看上去是新接口丢失了! 在IDEA中启动时服务的端口是Tomcat的默认端口8080,在独立的Tomcat中启动时将端口改成了8088。 由于新接口根本没找到,也不存在通过日志来定位问题。 对着Tomcat的命令行窗口愣了半天,突然发现:这个Tomcat启动的端口怎么是8099??? 8099是之前给测试提供的访问端口,配置了出入站规则的。 可是我明明是将端口改成了8088的呀!

这里说明一下:由于项目切换的缘故,本机一共有四五个Tomcat的拷贝;其中有两个9.0版本的,3个8.0版本的(有一个外购控件使用9.0版本有问题)。其中一个Tomcat9.0用于IDEA内嵌使用,另一个Tomcat9.0是提供了测试访问的。剩下的三个8.0是新近增加的,新的服务配置在了8.0的这几个Tomcat中。

这个时候就有点明白了,Tomcat的启动命令虽然调用的是8.0中的startup.bat,但实际上启动的是9.0中的startup.bat。而恰好,这个9.0中也部署了服务A,不过是一个老版本的服务A(有旧接口,新接口那肯定是没有的)。 那至于为什么从8.0中的bat批处理启动了9.0中的Tomcat,这个就要从环境变量上来找原因了。 最开始安装Tomcat的时候,为了方便启动,配置了CATALINA_HOME这个环境变量,而正是这个环境变量,导致了这个巧合的Bug。

追根问底

rem Guess CATALINA_HOME if not defined set "CURRENT_DIR=
转载请注明原文地址: https://www.6miu.com/read-63502.html

最新回复(0)