Я пытаюсь запустить веб-приложение с пружинной загрузкой 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 {