Ger*_*rdo 5 java spring vert.x spring-boot vertx-verticle
我正在使用vertx.
该 api 有一些我无法修改且需要通过的预定义测试,它们使用:
@Autowired
private GenericWebApplicationContext webApplicationContext;
private MockMvc mockMvc;
Run Code Online (Sandbox Code Playgroud)
完成 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.as vertx verticle和tomcat监听同一个端口(8080)。
这里的问题是,例如,我可以将 Verticle 端口更改为 8081,但是需要对端口 8080 执行测试。我该如何解决这个问题,以便测试侦听我部署的 Verticle(这也创建了一个 http 服务器) )?
基本上我想知道是否有可能MockHttpServletResponse使用由 verticle 创建的 vertx 服务器而不是嵌入式 tomcat。
小智 0
问题可能出在您的 pom.xml 和 @Configuration 类中。尝试将此依赖项添加到您的 pom.xml 中。因此,当您将 war 文件部署到服务器时,它将运行普通的 tomcat 而不是嵌入的
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
Run Code Online (Sandbox Code Playgroud)
在你的应用程序类中写下这个
@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);
}
Run Code Online (Sandbox Code Playgroud)
}
。那么您面临的问题是,tomcat 已经启动,因此它侦听端口 8080,并且您尝试运行另一个 tomcat,它将侦听相同的问题。
如果你想启动新的tomcat实例,你必须关闭旧的tomcat实例
| 归档时间: |
|
| 查看次数: |
3194 次 |
| 最近记录: |