使用 webflux 时,无法在本地主机:8080/h2 控制台上访问 H2 db

2022-09-03 05:35:04

使用 webflux 时,无法在 localhost:8080/h2-console 上访问 H2 db。我在某处读到,这只有在开发基于Servlet的应用程序时才可用。但是我正在与Netty一起使用Webflux。那么有没有办法在这样的应用程序中看到h2控制台呢?


答案 1

我遇到了同样的问题,我最终在另一个端口上手动启动了控制台服务器:

@Component
@Profile("test") // <-- up to you
public class H2 {

    private org.h2.tools.Server webServer;

    private org.h2.tools.Server tcpServer;

    @EventListener(org.springframework.context.event.ContextRefreshedEvent.class)
    public void start() throws java.sql.SQLException {
        this.webServer = org.h2.tools.Server.createWebServer("-webPort", "8082", "-tcpAllowOthers").start();
        this.tcpServer = org.h2.tools.Server.createTcpServer("-tcpPort", "9092", "-tcpAllowOthers").start();
    }

    @EventListener(org.springframework.context.event.ContextClosedEvent.class)
    public void stop() {
        this.tcpServer.stop();
        this.webServer.stop();
    }

}

然后导航到 http://localhost:8082(不带 /h2 控制台)。


答案 2

我发现一个库可以做完全相同的sp00m描述,它可能对某人有所帮助。它开箱即用。

https://mvnrepository.com/artifact/me.yaman.can/spring-boot-webflux-h2-console

和github页面:https://github.com/canyaman/spring-boot-webflux-h2-console


推荐