首页 > 解决方案 > 如何在 java ee 应用程序中启用 h2 控制台

问题描述

我想在开发我的应用程序期间访问 h2 控制台功能。我使用 JavaEE 和 wildfly 作为我的应用程序服务器。

我知道对于 Spring Boot,我们需要添加以下配置行:

spring.h2.console.enabled=true

spring.h2.console.path=/h2

比我们有控制台http://localhost:8080/h2/

但是 javaEE 呢?我怎样才能访问它?我的 pom 对 h2 有以下依赖:

<dependency>
   <groupId>com.h2database</groupId>
   <artifactId>h2</artifactId>
   <version>1.4.196</version>
   <scope>runtime</scope>
</dependency>

和persistance.xml:

<properties>
    <property name="eclipselink.logging.level" value="INFO"/>
    <property name="eclipselink.logging.parameters" value="true"/>

    <property name="hibernate.show_sql" value="true" />
    <property name="javax.persistence.schema-generation.database.action" value="create"/>
    <property name="javax.persistence.sql-load-script-source" value="META-INF/initial.sql"/>
</properties>

标签: javajbosswildflyh2

解决方案


如果您在 JEE 服务器上部署 Spring Boot,则控制台应该位于应用程序上下文路径下定义的路径。

但是,如果您要求不依赖于 Spring Boot 的解决方案,那么有一个org.h2.server.web.WebServlet完全适合这种情况的解决方案。所需要的只是使用WEB-INF/web.xml部署描述符公开它:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xmlns="http://java.sun.com/xml/ns/javaee"
  xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
  version="2.5">
  <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>

推荐阅读