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

Ash*_*shu 6 h2 quarkus

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

spring.h2.console.path=/h2
Run Code Online (Sandbox Code Playgroud)

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

Oli*_*idt 13

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

首先,您需要在 Quarkus 中激活 Servlet 支持。然后,您可以继续在部署描述符中配置 H2 servlet ,或者如果您熟悉的话,可以web.xml在 a 中配置 H2 servlet 。undertow-handlers.conf

开始了:

  1. 假设您已经quarkus-jdbc-h2添加了扩展程序
  2. 添加quarkus-vertxquarkus-undertow扩展
  3. 在下面创建部署描述符src/main/resources/META-INF/web.xml
  4. 像这样配置 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>
Run Code Online (Sandbox Code Playgroud)

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

如果您需要设置参数,请使用<init-param>例如:

<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>
Run Code Online (Sandbox Code Playgroud)

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