Как изменить http порт весны mockmvc - PullRequest
0 голосов
/ 15 сентября 2018

Я разрабатываю простой 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 ]

0 голосов
/ 15 сентября 2018

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

0 голосов
/ 15 сентября 2018

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

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

и в вашем классе Application напишите это

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...