Как изменить 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, если вы хотите начать новый