java - Spring Boot 不绑定(bind)到 Tomcat 端口

标签 java spring spring-boot tomcat

我正在尝试将 war Spring Boot 项目部署到 Tomcat 服务器中,该服务器将其他项目绑定(bind)到某些端口。当我部署新的 war 项目时,服务似乎没有绑定(bind)到从 Spring Boot application-properties< 分配的端口 8082/.

首先,我在server.xml上添加了新端口8082

<Connector port="8080" protocol="HTTP/1.1"
           connectionTimeout="-1"
           redirectPort="8443" /> //That was already specified

<Connector port="8082" protocol="HTTP/1.1"
           connectionTimeout="20000"
           redirectPort="8443" /> //My addition

然后使用 netstat -plnt 我看到端口可用

tcp6       0      0 :::8082                 :::*                    LISTEN      -

通过转到 /opt/apache-tomcat-7.0.88/webapps,我的新 war 应用程序似乎已部署。

应用程序日志未显示任何错误或异常,Spring Boot 应用程序似乎在运行。以下是 Spring 的完整日志:https://pastebin.com/nX04gjE3

当我尝试使用

测试服务时

wget http://localhost:8082/services/test

我得到以下信息

--2019-06-10 09:49:56--  http://localhost:8082/services/test
Resolving localhost (localhost)... ::1, 127.0.0.1
Connecting to localhost (localhost)|::1|:8082... connected.
HTTP request sent, awaiting response... 404 Not Found
2019-06-10 09:49:56 ERROR 404: Not Found.

每次更改后,我当然会重新启动 apache。 这是一个部署的服务器而不是在本地机器上,我所做的每一个更改都是用 putty 和 winscp。

ServicesApplication.java

@SpringBootApplication
public class ServicesApplication extends SpringBootServletInitializer {


    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
        return application.sources(ServicesApplication.class);
    }

    public static void main(String[] args) {
        SpringApplication.run(ServicesApplication.class, args);
    }

}

应用程序属性

server.port=8082
http.port=8082


logging.file = /opt/logs/services.log


spring.datasource.url=jdbc:mysql://X.X.X.X/name?useSSL=false
spring.datasource.username=username
spring.datasource.password=password
spring.jpa.hibernate.naming.physical-strategy=org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl

编辑:我不需要应用程序在 8082 上运行我可以接受其他 8080 相同端口的答案。

最佳答案

如果您想在特定端口下运行该应用程序,则需要在 server.xml 中为该应用程序指定一个新部分,而另一个端口也可用:

 <Server>
  <Service name="commonservice">
    <Connector port="8080" protocol="HTTP/1.1"
           connectionTimeout="-1"
           redirectPort="8443" />
    <Engine><Host name="commonhost">
          <Context path="/commonwebab"/>     
    </Host></Engine>
  </Service>
  <Service name="springservice">
    <Connector port="8082" protocol="HTTP/1.1"
           connectionTimeout="20000"
       redirectPort="8444" />
    <Engine><Host name="springhost">
      <Context path="/springapp"/>
    </Host></Engine>
  </Service>
</Server>

明智的 Spring Boot,确保您的正常主类扩展:

@SpringBootApplication
public class App extends SpringBootServletInitializer

关于java - Spring Boot 不绑定(bind)到 Tomcat 端口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56521792/

相关文章:

java - 如何发送 TCP 请求的回复(spring-integration)?

spring - 无法 Autowiring Spring 数据 JPA 存储库

java - Spring-Boot JAR 中的 BOOT-INF 和 META-INF 目录是什么?

java - Web 代理背后的 Spring Cloud 数据流

java - JDK 11 Spring Boot 2 .TypeNotPresentException : Type javax. servlet.Filter 不存在

Java RMI心跳时间进程循环

java - 如何打印数组中的重复项?

java - 当 ArrayList 位于对象内部时访问 ArrayList 方法

Java、Spring 在属性文件中使用变量的最佳实践

java - 带有 HttpSessionListener 的 session 计数器和 session 计数变量访问