Как устранить причину сбоя Spring boot 2.2.6 при запуске приложения с уже используемым портом? - PullRequest
0 голосов
/ 18 апреля 2020

Я пытаюсь запустить веб-приложение с пружинной загрузкой v2.2.6, но оно завершается неудачно с:

Web server failed to start. Port PORT_NUMBER was already in use.

Данный порт, независимо от номера, всегда свободен, и никакие другие приложения не используют это, несмотря на то, что Spring всегда сообщает об ошибке выше. Изменение номера порта ничего не делает. Я хотел бы услышать любые мнения о том, что может вызвать такую ​​проблему. Вопрос в том, как устранить эту проблему.

Конфигурация:

application.yaml

spring:
  datasource:
    testWhileIdle: true
    validationQuery: SELECT 1
    hikari:
      connectionTimeout: 50000
      idleTimeout: 300000
      maxLifetime: 900000
      maximumPoolSize: 20
      minimumIdle: 3
      poolName: MyPool
      connectionTestQuery: select 1 from dual
      autoCommit: true
    driver-class-name: com.mysql.cj.jdbc.Driver
    username: ${DB_USERNAME}
    password: ${DB_PASSWORD}
    url: ${DB_URL}
  jpa:
    database-platform: org.hibernate.dialect.MySQL8Dialect
    properties:
      hibernate:
        dialect:
            storage_engine: innodb
        temp.use_jdbc_metadata_defaults: false
        default_schema: ${DB_SCHEMA}
    hibernate:
      ddl-auto: none
    database: mysql
  flyway:
    enabled: true
    user: ${MIGRATION_USER}
    password: ${MIGRATION_PASSWORD}
    schemas: ${DB_SCHEMA}
    placeholders:
      migration_user: ${SPS_MIGRATION_USER}
      app_user_name: ${SPS_DB_USERNAME}
      app_user_password: ${SPS_DB_PASSWORD}
      app_user_location: ${SPS_DB_USER_LOCATION}

security:
  jwt:
    access:
      token:
        expire-length: ${JWT_TOKEN_EXPIRATION}
        secret-key: ${JWT_SECRET_KEY}

springdoc:
  api-docs:
    path: /docs
  swagger-ui:
    path: /docs/ui
logging:
  level:
    root: info
server:
  address: "80"


С учетом структуры приложения: (некоторые папки для краткости опущены)

│   │   └── com
│   │   │       └── my
│   │   │           └── application
│   │   │               └── server
│   │   │                   ├── app 
│   │   │                   ├── common
│   │   │                   │   ├── config
│   │   │                   ├── firebase
│   │   │                   │   ├── config
│   │   │                   ├── security
│   │   │                   │   ├── config
│   │   │                   ├── sentry
│   │   │                   │   └── config
│   │   │                   ├── session
│   │   │                   │   ├── config

Классами конфигурации являются:

package com.my.app.server.app

@SpringBootApplication(scanBasePackages = "com.my.application.server.*")
@Slf4j
public class ServerApp {
    public static void main(String[] args) {
        SpringApplication.run(ServerApp.class, args);
    }
}

In package com.my.app.server.app

@EnableAsync
@Configuration
public class AsyncConfiguration implements AsyncConfigurer {
.....
@Configuration
@AllArgsConstructor
@Slf4j
public class RestConfiguration implements WebMvcConfigurer {
@Configuration
public class CommonConfig {

in package com.my.app.server.firebase.config;

@Configuration
@EnableConfigurationProperties(FirebaseProperties.class)
public class FirebaseConfig {

В com.my.app.server.security.config

@Configuration
@EnableWebSecurity
@EnableGlobalMethodSecurity(prePostEnabled = true)
@Slf4j
public class SecurityConfig extends WebSecurityConfigurerAdapter {

В package com.my.app.server.session.config;

@Configuration
@EnableConfigurationProperties({
        SessionProperties.class, SessionValidity.class
})
@Slf4j
public class SessionConfig {

1 Ответ

0 голосов
/ 18 апреля 2020

Я нашел проблему. В моем application.yaml у меня есть эта строка

server:
  address: "80"

Мои размышления по этому вопросу следующие: адрес должен быть IP-адресом и путем предоставления этой строки "80" (ошибка с моей стороны, я на самом деле хотел / нуждался server.port) Я испортил механизм ограничения IP, и показано исключение, вероятно, неправильное или, скорее, слишком общее, чтобы предоставить более полную информацию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...