问题现象

  • SpringBoot应用的application.properties文件中,配置的Tomcat端口不生效。
  • 在控制台修改Tomcat端口后,在机器上查看时,发现监听在此端口的并不是Tomcat进程。

可能原因

上述问题为正常现象。由于SAE实现流量灰度功能的需要,在SAE中所有使用了流量灰度的应用,其服务请求都是先经过Tengine,然后再由Tengine转发到Tomcat。为了使Tengine能够顺利找到Tomcat端口,在使用了Tengine的情况下,SAE将Tomcat端口设置为固定值65000。

例如以下配置:
server.port=28082

虽然您手动配置了端口值28082,但是启动参数中已默认添加--server.port=65000,因此生效的端口值仍然为65000。因此,观察Tomcat是否启动成功时,需要注意Tomcat是监听在65000端口的。

解决方案

修改应用端口,其实修改的是Tengine端口。例如,下图的控制台配置中,虽然将应用端口(Tengine端口)值改成了8080,但实际上Tomcat端口值仍然为65000。更多信息,请参见设置Java Tomcat参数

sc_edit_Java_Tomcat_configuration.png