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

8

我目前正在尝试使用一些小的配置更改来运行Spring Boot应用程序,但似乎无法正确监听端口。看起来,Tomcat实例加载的server.xml会覆盖任何应用程序.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

这些值不应该在Tomcat中配置吗?我认为是的。 - We are Borg
阅读以下内容后似乎并没有配置端口: https://dev59.com/vmEi5IYBdhLWcg3wptl_ http://docs.spring.io/spring-boot/docs/current-SNAPSHOT/reference/htmlsingle/#howto-change-the-http-port看起来在Tomcat中没有配置端口? - Brian
2
或许这一切只针对嵌入式Tomcat? - Brian
如果您有独立的Tomcat,请进入目录,然后进入conf文件夹,再进入server.xml文件。在那里,您将看到连接器,编辑其中一个带有http1.1的端口号。如果您使用Spring Security,也可以指定端口,但这是另一件事。 - We are Borg
3个回答

12

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

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


2

server.port属性只用于嵌入式应用服务器。如果您想使用独立的应用服务器,则需要在应用服务器本身上进行配置。在Tomcat中,如果指定了,则在server.xml文件中进行配置。

如果您想在AWS Elastic Beanstalk上运行应用程序,在创建环境时,您可以指定要有一个Web服务器+Tomcat。

这样,您就不必担心端口问题。亚马逊将为您处理。


1

可以在配置文件中编辑端口

  1. locate {Tomcat installation folder}\conf\server.xml
  2. Find a statement similar to the following:
    <!-- 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" />
    

    or
    <Connector port="8080" protocol="HTTP/1.1" 
               connectionTimeout="20000" 
               redirectPort="8443" />
    
  3. Change the port number:
    <Connector port="8181" protocol="HTTP/1.1" 
               connectionTimeout="20000" 
               redirectPort="8443" />
    

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接