Spring Boot + Tomcat忽略server.port属性?

时间:2015-07-23 15:50:10

标签: java spring tomcat gradle spring-boot

我目前正试图通过一些小的配置更改启动并运行Spring Boot应用程序,但我似乎无法让端口正确收听。似乎tomcat实例加载的server.xml会覆盖我的application.properties文件指定的任何内容。

application.properties:

logging.level.app = TRACE
logging.file = /tmp/my-server.log
server.port = 8081

当我将其部署到我的/ usr / local / tomcat / webapps时,我可以访问服务器,但只能访问端口8080.它似乎忽略了server.port属性。我相信服务器正在正确地获取属性文件,因为正确记录到/tmp/my-server.log

最终目标是让服务器在Amazon Elastic Beanstalk中运行时监听我选择的端口。我可以更新负载均衡器上的端口,但如果服务器只监听它预配置的端口,那就无所谓了。

提前感谢您的帮助!

OSX Yosemite,Tomcat 8.0.24,Spring Boot v1.2.4

3 个答案:

答案 0 :(得分:7)

server.port等Spring Boot属性只有在使用嵌入式Tomcat时才会生效。也就是说,如果您通过在其中使用main执行SpringApplication.run()方法或通过创建可执行JAR并使用java -jar启动它来启动应用程序。

将应用程序作为WAR存档部署到独立的Tomcat时,必须通过编辑server.xml以及可能的其他配置文件以传统方式配置Tomcat。

答案 1 :(得分:0)

server.port 属性仅用于嵌入式应用程序服务器。 如果要使用独立的配置,则需要在应用程序服务器本身上完成配置。在tomcat的情况下,if在server.xml文件中指定。

如果要在AWS Elastic Beanstalk上运行应用程序,则在创建环境时,可以指定要使用webserver + tomcat。

这样您就不必担心端口了。亚马逊将为您处理它。

答案 2 :(得分:0)

可以edit the port in the configuration file

  1. 找到{Tomcat installation folder}\conf\server.xml
  2. 查找类似于以下内容的语句:
    <!-- Define a non-SSL HTTP/1.1 Connector on port 8180 -->
       <Connector port="8080" maxHttpHeaderSize="8192"
                  maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
                  enableLookups="false" redirectPort="8443" acceptCount="100"
                  connectionTimeout="20000" disableUploadTimeout="true" />
    
    要么
    <Connector port="8080" protocol="HTTP/1.1" 
               connectionTimeout="20000" 
               redirectPort="8443" />
    
  3. 更改端口号:
    <Connector port="8181" protocol="HTTP/1.1" 
               connectionTimeout="20000" 
               redirectPort="8443" />