Как изменить 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.

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
5
0
3 235
2

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

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

Gerardo 15.09.2018 15:30

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

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

Gerardo 15.09.2018 16:21

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