如何在 Quarkus 应用程序中设置 H2 数据库控制台 url

Posted

技术标签:

【中文标题】如何在 Quarkus 应用程序中设置 H2 数据库控制台 url【英文标题】:How to set H2 Database console url in the Quarkus Application 【发布时间】:2020-09-03 07:30:32 【问题描述】:

由于 Spring boot 应用程序提供了一个属性来设置 H2 数据库的 Web 控制台 URL。

spring.h2.console.path=/h2

有没有办法在 Quarkus 应用程序中设置相同的属性?如果不是,那么默认值是什么 Web 控制台 URL。

【问题讨论】:

【参考方案1】:

是的,有办法。但它并不像 Spring Boot 中那么简单,因为 Quarkus 对 H2 的支持不像 Spring Boot 那样一流。

首先,您需要activate Servlet support in Quarkus。然后,您继续在 web.xml 部署描述符或 undertow-handlers.conf(如果您熟悉它)中配置 H2 servlet。

我们开始吧:

    假设您已经添加了 quarkus-jdbc-h2 扩展 添加 quarkus-vertxquarkus-undertow 扩展 在src/main/resources/META-INF/web.xml下创建部署描述符 像这样配置 H2 控制台 Servlet
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE web-app
        PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
        "http://java.sun.com/dtd/web-app_2_3.dtd">

<web-app>
    <display-name>My Web Application</display-name>

    <servlet>
        <servlet-name>h2-console</servlet-name>
        <servlet-class>org.h2.server.web.WebServlet</servlet-class>
    </servlet>

    <servlet-mapping>
        <servlet-name>h2-console</servlet-name>
        <url-pattern>/h2/*</url-pattern>
    </servlet-mapping>

</web-app>

运行./mvnw quarkus:dev 并转到应该显示控制台的http://localhost:8080/h2

如果您需要设置参数,请使用&lt;init-param&gt;,例如:

<servlet>
        <servlet-name>h2-console</servlet-name>
        <servlet-class>org.h2.server.web.WebServlet</servlet-class>
        <init-param>
            <param-name>webAllowOthers</param-name>
            <param-value>true</param-value>
        </init-param>
    
</servlet>

http://www.h2database.com/html/tutorial.html#usingH2ConsoleServlet

【讨论】:

以上是关于如何在 Quarkus 应用程序中设置 H2 数据库控制台 url的主要内容,如果未能解决你的问题,请参考以下文章

Quarkus如何在application.properties中设置环境变量

在测试我的 Quarkus 应用程序时如何使用内存中的 H2 数据库?

如何在 Java 应用程序中设置 H2 嵌入式数据库以在小型网络中使用?

如何使用hibernate jpa在内存数据库中设置h2?

如何从 application.properties 文件中设置 h2.jdbc?

尝试使用 Quarkus 从本地 H2 数据库中检索所有行