如何更改Spring MockMVC的HTTP端口

时间:2018-09-15 11:15:56

标签: java spring spring-boot vert.x vertx-verticle

我正在使用vertx开发具有三个端点的简单api。

该api包含一些我无法修改且需要通过的预定义测试,这些测试使用:

@Autowired
private GenericWebApplicationContext webApplicationContext;
private MockMvc mockMvc;

完成api后,我发现在使用verticles时,我不需要提供Spring Boot Starter依赖项的嵌入式tomcat,因此将其删除。

我的问题是什么?

我无法排除嵌入式tomcat,因为spring boot需要它,否则我将得到以下错误: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)。

这里的问题是,例如,我可以将verticle端口更改为8081,但是需要将测试执行到8080端口。如何解决此问题,以便测试监听我部署的verticle(这会创建一个http服务器也是)?

基本上,我想知道MockHttpServletResponse是否使用由verticle创建的vertx服务器而不是嵌入式tomcat。

2 个答案:

答案 0 :(得分:0)

问题可能出在pom.xml和@Configuration类中。尝试将此依赖项添加到pom.xml中。因此,当您将war文件部署到服务器时,它将运行普通的tomcat而不是嵌入

<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实例,必须将其关闭

答案 1 :(得分:0)

在您的application.properties文件中,将server.port = 8080或8082放入端口,您可以使用netstat -a-o-n命令提示符并终止端口,以查看哪个进程正在使用该端口