Как изменить http порт весны mockmvc

Я разрабатываю простой API с тремя конечными точками, используя vertx,

Этот API имеет несколько предопределенных тестов, которые я не могу изменить, и мне нужно пройти, которые используют:

@Autowired
private GenericWebApplicationContext webApplicationContext;
private MockMvc mockMvc;

После завершения API я обнаружил, что, поскольку я использую статьи, мне не нужен встроенный tomcat, который обеспечивает зависимость от загрузчика при запуске, поэтому я удалил его.

Какая у меня проблема?

Я не могу исключить встроенный tomcat, потому что он нужен весенней загрузке, иначе я получу следующую ошибку: The Tomcat connector configured to listen on port 8080 failed to start. The port may already be in use or the connector may be misconfigured. так как vertx verticle и tomcat слушают один и тот же порт (8080).

Проблема здесь заключается в том, что я могу изменить порт вертикали, например, на 8081, но тесты нужно будет выполнить для порта 8080. Как я могу это исправить, чтобы тесты прослушивали вертикал, который я развертываю (что также создает http-сервер?)?

В основном я хотел бы знать, если это возможно, что MockHttpServletResponse использует сервер vertx, который создан verticle вместо встроенного tomcat.

2 ответа

В вашем файле application.properties введите server.port=8080 или 8082, вы можете увидеть, какой процесс использует порт, используя командную строку с помощью netstat -aon, и завершить его.

Проблема может быть в вашем pom.xml и в вашем классе @Configuration. Попробуйте добавить эту зависимость в ваш pom.xml . Так что, когда вы развернете файл war на свой сервер, он будет запускать обычный tomcat вместо embeded

<dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-tomcat</artifactId>
        <scope>provided</scope>
    </dependency>

и в своем классе приложения напишите это

@SpringBootApplication
public class Application extends SpringBootServletInitializer {

public static void main(String[] args) {

    SpringApplication.run(Application.class, args);
}

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

}

, Тогда проблема, с которой вы столкнулись, для этого tomcat, уже запущена, поэтому он прослушивает порт 8080, и вы пытаетесь запустить другой tomcat, который прослушивает ту же проблему.

Вы должны закрыть старый экземпляр Tomcat, если вы хотите начать новый

Другие вопросы по тегам