Как изменить http-порт Spring mockmvc

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

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

@Autowired
private GenericWebApplicationContext webApplicationContext;
private MockMvc mockMvc;

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

В чем моя проблема?

Я не могу исключить встроенный 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, который создается по вертикали вместо встроенного tomcat.


person Gerardo    schedule 15.09.2018    source источник


Ответы (2)


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

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

person Community    schedule 15.09.2018
comment
Я пробовал это, но при запуске mvn clean spring-boot:run получаю следующую ошибку: org.apache.catalina.LifecycleException: Failed to start component [Connector[HTTP/1.1-8080]] - person Gerardo; 15.09.2018

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

person Vishal Torne    schedule 15.09.2018
comment
Это не проблема, моя вершина vertx работает на 8081, а встроенный tomcat - на 8080. Проблема в том, что mockMvc выполняет запросы только на встроенном tomcat, а не на моей вершине, и я хотел бы использовать только http-сервер vertx, а не встроенный tomcat. - person Gerardo; 15.09.2018